机器学习(第二周)(2) 第一周第二周相关习题和答案解析

warmUpExercise 热身题

在命令行调用warmUpExercise() 函数,生成一个5x5的单位矩阵。如下:
在这里插入图片描述
实现如下:
在这里插入图片描述
A = eye(5) 通过eye(n) 生成 nxn的单位矩阵。

plotData 显示数据图形

首先加载数据集:
在这里插入图片描述
得到如下数据:
在这里插入图片描述
在这里插入图片描述
生成的是97 * 2的矩阵。其中第一列是参数X,第二列是结果y。分离X, y。

在这里插入图片描述
这里X,y分别是97 * 1的矩阵。通过X,y 生成图形
在这里插入图片描述
横轴是X,纵轴是y。通过红色的X,来表示每个点的位置。
实现如下:
在这里插入图片描述
其中plot(X, y, ‘rx’, ‘MarkerSize’, 10); 是显示图形的函数。前2个参数分别是横轴纵轴数据集。第三个参数rx代表是红色的x为标记。MarkerSize 10 意思是标记的大小。

computeCost 通过代价函数,计算代价值。

已知代价函数:
在这里插入图片描述
线性回归函数
在这里插入图片描述
由此设置x0 = 1
通过之前获得的数据集,计算给定的theta 所求的代价值。

1.填充X 数据集第一列为1 满足X0 = 1 第二列为数据集。
在这里插入图片描述
2. 设置theta 值
在这里插入图片描述
3.根据代价函数,写出实现方法,如下:
在这里插入图片描述

gradientDescent 梯度下降

有了代价函数,我们就可以通过以下函数
在这里插入图片描述
不断的优化theta的值,得到theta值的最优解。

1.设置参数 iterations = 1500 执行1500次的下降计算,alpha = 0.01 梯度下降的缩放倍率为0.01。
在这里插入图片描述
2.实现以下梯度下降的过程,并求出一个theta值。
在这里插入图片描述
3.绘制出线性回归的图像,可以看出接近最优解
在这里插入图片描述
4.做一些值预测
假设参数值分别是3.5和7 得出预测结果
在这里插入图片描述

绘制代价函数的表面图和等高线

首先 生成theta0和theta1的一系列参数各100个 如下:
在这里插入图片描述
其中linspace(-10,10,100) 生成1*100的矩阵,区间是-10到10之间的等差数列。
然后求出每个theta0;theta1对应的代价值,生成
在这里插入图片描述
绘制表面图
在这里插入图片描述
绘制等高线
在这里插入图片描述
在这里插入图片描述
绘制之前算出来的theta的最右解
在这里插入图片描述
得到以下点
在这里插入图片描述

多变量下的线性回归

Normalization 规整数据

在线性回归的计算过程中,往往涉及到次方运算。当变量值比较大的情况下,需要将变量值压缩到比较小的范围。
首先加载数据,当前为2个变量,1个结果 3列数据。
在这里插入图片描述
有47行数据
在这里插入图片描述
分离数据,分成47x2的参数X。和47x1的结果y。
在这里插入图片描述

mean函数求出每一列的平均值
在这里插入图片描述
std函数求出每一列的方差
在这里插入图片描述
按照X的行数平铺平均值和方差
在这里插入图片描述
得出规整后的数据
在这里插入图片描述
大部分的数据将被压缩在-1 - 1的范围之内。

computeCostMulti 多变量的代价函数

和单变量的代价函数计算方式没什么太大区别 如下
在这里插入图片描述
其中X 是 47x3的矩阵,其中x0 = 1。为2变量。 theta为3x1的矩阵 对应的theta0,theta1,theta2。

gradientDescentMulti 多变量梯度下降

计算方式和单变量梯度下降没什么区别 如下
在这里插入图片描述
其中X是训练样本 y是结果集theta是初始的参数值 这里是[0;0;0]。
alpha是特征缩放值num_iters是迭代次数。
通过公式
在这里插入图片描述
求出最优theta值。将梯度下降时的代价值记录在J_History
调用过程如下:
在这里插入图片描述
然后绘制出J_History的下降图示:
在这里插入图片描述
在这里插入图片描述
通过代价值的梯度下降图示我们可以知道。已经获取到theta的一个最优解。
通过参数来预测结果,来验证是否正确。假设X1 = 1650 X2 = 3 得到的解为
在这里插入图片描述
符合预期。

Normal Equations 正规方程

在样本数据较小的情况下,使用正规方程计算方式优于梯度下降算法。方程如下
在这里插入图片描述
因为要求逆矩阵,所以如果是奇异矩阵。这个方式无法求解。
在这里插入图片描述
带入之前的参数验证
在这里插入图片描述
结果接近,接近最优解。

附个自己写的地址 https://github.com/kimi987/machineLearningExercise

end

猜你喜欢

转载自blog.csdn.net/qq_35554975/article/details/88291285