吴恩达机器学习课程是机器学习领域的知名课程,对于入门机器学习起着非常关键的作用。但是由于年代问题,课程中使用的是Octave,即matlab框架,难以适用现今流行的python AI语言。特此,笔者在网上找到了python版的作业,来与各位分享,同时纪录自己学习过程,共勉。
------------------------------------------------------------------------------------------------
python版吴恩达机器学习资料(仅供学习和参考,侵权请联系删除)
------------------------------------------------------------------------------------------------

第三方库介绍

吴恩达机器学习---python版学习笔记(exe1 线性回归)
exe1中设计的三个第三方库,分别是:

  • Numpy:
    由于机器学习算法在数据处理过程中大都涉及线性代数的知识,需要用到矩阵操作,Python本身没有处理矩阵的数据类型,因此需要使用附加的函数库。其中NumPy函数库是Python开发环境的一个独立模块,是Python的一种开源的数值计算扩展工具。
    它是处理数值计算最为基础的类库。这种工具可以用来存储和处理大型多维矩阵,比Python自身的列表结构要高效的多。尽管Python的list类型已经提供了类似于矩阵的表示形式,但是NumPy提供了更多的科学计算函数。
  • Pandas:
    是基于NumPy数组构建的,使数据预处理、清洗、分析工作变得更快更简单。pandas是专门为处理表格和混杂数据设计的,而NumPy更适合处理统一的数值数组数据。
    -Matplotlib
    是数据可视化的重要第三方库

一元线性回归

吴恩达机器学习---python版学习笔记(exe1 线性回归)
读入数据并展示,txt文件如图所示:
吴恩达机器学习---python版学习笔记(exe1 线性回归)
调用了pandas的pd.read_csv函数
具体用法:pd.read_csv函数调用规则

吴恩达机器学习---python版学习笔记(exe1 线性回归)
调用了pandas中的plot函数,
kind:scatter表示散点图
figsize : a tuple (width, height) in inches#图片尺寸大小
具体用法如下:
plot函数用法

吴恩达机器学习---python版学习笔记(exe1 线性回归)
定义一个名为computeCost的函数,来还原代价函数,X为矩阵吴恩达机器学习---python版学习笔记(exe1 线性回归)
吴恩达机器学习---python版学习笔记(exe1 线性回归)
插入一列1来表示X0,因为实际上并没有X0,只是为了矩阵维数一致而引入的X0,所以X0恒为1。
吴恩达机器学习---python版学习笔记(exe1 线性回归)
初始化X和y,数据来源于上面定义过的data
shape函数是numpy.core.fromnumeric中的函数,它的功能是查看矩阵或者数组的维数。
iloc 主要是通过行号获取行数据,划重点,序号!序号!序号!
iloc[0:1],由于Python默认是前闭后开,所以,这个选择的只有第一行!

吴恩达机器学习---python版学习笔记(exe1 线性回归)
调用head来检查矩阵是否正确,当数据集较多时,可在head()中写入要观察的行数,例如head(3)只输出前三行

吴恩达机器学习---python版学习笔记(exe1 线性回归)
由于上面定义的X,y是txt里的数据,而运算时是矩阵运算,因此要转化成矩阵,调用np的matrix函数。
同时初始化要更新的theta的值,theta0为0,theta1初始化0.

随后调用上面写的computeCost函数即可得到代价值
进一步调用梯度下降算法:
吴恩达机器学习---python版学习笔记(exe1 线性回归)
详细注释:
吴恩达机器学习---python版学习笔记(exe1 线性回归)
函数构造完成后,只需要给出一些初始值,即可调用该函数了。
吴恩达机器学习---python版学习笔记(exe1 线性回归)
例如此处给出的学习率为0.01,迭代次数为1500
注意返回的g为矩阵【theta0,theta1】,cost为1500个代价函数值组成的数组。
吴恩达机器学习---python版学习笔记(exe1 线性回归)
想预测哪个x只要输入【1,x】和theta相乘即可。

生成拟合直线
吴恩达机器学习---python版学习笔记(exe1 线性回归)
linespace函数:生成指定范围内指定个数的一维数组
在指定的间隔[“start”,“stop”,num]内均匀地返回数字。返回“num”个等间距的样本。
具体用法:linespace用法
subplot为子图函数,fig代表绘图窗口(Figure);ax代表这个绘图窗口上的坐标系(axis),一般会继续对ax进行操作。

至此一元情况分析完毕,下面分析多元线性回归情况

多元线性回归

同样先导入相关数据
吴恩达机器学习---python版学习笔记(exe1 线性回归)
txt文件为:
吴恩达机器学习---python版学习笔记(exe1 线性回归)
吴恩达机器学习---python版学习笔记(exe1 线性回归)
发现自变量之间差距过大,为了提高效率,要进行特征缩放。
下面为迭代过程,可以类比一元情况:
吴恩达机器学习---python版学习笔记(exe1 线性回归)

正规方程

下面介绍正规方程解法:
利用最小二乘法,可以推导:
吴恩达机器学习---python版学习笔记(exe1 线性回归)
将上述公式转化成代码即可:
吴恩达机器学习---python版学习笔记(exe1 线性回归)
其中:np.linalg.inv()为矩阵求逆函数
------------------------------------------------------------------------------------------------

相关文章: