机器学习自学感想杂谈

最近在学机器学习课程,主要是在做吴恩达简版机器学习课后作业,不过原版的作业要求用octave/matlab完成,因为现在python的流行,我也尝试在看着别人参考程序的基础上自己试图模仿着写一下程序

现在把一些小的感想或者感悟总结如下:
过程

1、从文件读取数据

2、截取片段,将X、y数据变成矩阵形式(ndarray),并将参数矩阵θ初始化,通常都是全0或者全1的行向量或列向量

3、根据公式写出假设函数,在此步骤中,书本上的公式形如θTX的,在代码中并不一定就是θTX,它有可能是XTθ或者θX等形式,具体要看X的shape,θ在初始化时是行向量还是列向量,X与θ或者其转置相乘之后要和y的shape相同,才便于后续计算

4、根据公式写出代价函数

5、写出计算梯度的函数或者批量梯度下降的函数

6、通过初始化学习率α以及迭代次数,算出迭代若干次之后的代价函数,如果代价函数已经是最小,将此时的参数向量θ取出来代入假设函数中去求得预测的结果(线性回归);通过高级算法算出使损失函数最小时的参数向量θ取出来代入假设函数中去预测分类的结果(逻辑回归)

7、将预测的值与实际值对比得到预测的准确率

当然,如果第1、2步中如果数据范围差异过大,还要先进行特征缩放,4-6步中,可以适当加入正规化项,对假设函数中高阶项进行惩罚以减少过拟合现象。在第2步和第6步之后还可以通过matplotlib画图,将数据可视化,以便于观察和分析。

第4步写代价函数时,使用向量化的方法可以使代码更简洁,它们自己就可以加在一起

第6步使用高级算法时,传的参需要前面自定义的代价函数,代价函数的形参中θ必须在首位,否则会出错

根据公式写各种函数时,要注意对于ndarray类型的数据来说X*y是向量的乘法,即X和y矩阵中行标和列标相等的元素分别相乘,而X@y才表示矩阵的简洁,这点千万要注意

截止今天为止,也只勉强完成了两次练习的内容,还有一些不理解的地方,对于画图的程序也没仔细研究。下来需要慢慢补上。

重新翻了一下中信出版社魏贞原的《机器学习python实践》,发现这真是一本不可多得的好书,以后用python完成吴恩达简版ML课后练习时就要用它当参考书了。

猜你喜欢

转载自www.cnblogs.com/flyingtester/p/10970831.html