吴恩达机器学习课后作业第一周ex1答案详解

时间:2024-04-12 09:40:41

吴恩达机器学习ex1

前言:此次机器学习是本人第一次接触matlab 所以以下的代码中会有对于一些matlab函数的解释

ex1_m:

Par1:

吴恩达机器学习课后作业第一周ex1答案详解
图中部分命令解释:
pause:表示程序执行到此处时停止,用于按任意键可以继续执行
上图函数 warmUpExercise() 函数表示求出一个 5 x 5 的单位矩阵

warmUpExercise():
吴恩达机器学习课后作业第一周ex1答案详解

Part2:

Part2部分是对 ex1data1.txt文件中的样例来绘制相关的图像,直观的看出样例的分布情况
吴恩达机器学习课后作业第一周ex1答案详解
上图表示的是ex1data1.txt中的样例,第一列表示样例的特征值,第二列表示样例的结果
吴恩达机器学习课后作业第一周ex1答案详解
图中部分命令解释:
data = load(‘ex1data1.txt’):表示将ex1data1.txt中的数据以矩阵的形式存放在data中
X = data(:,2):表示将data中的第一列的全部的数据存放在X中
m = length(y):length()函数表示求取vector的长度,如何函数中的参数为矩阵,则只会求矩阵有多少列

plotData(X,y):
吴恩达机器学习课后作业第一周ex1答案详解
图中部分命令解释:
figure:表示创建一个绘图的窗口
plot():表示绘制一个2D图像,前两个参数X,Y的数据分别对应到2D图像中X和Y轴上的数据,rx中r表示使用red颜色,x表示以 ‘X’ 标志绘制点,‘MarkerSize’ 10 表示将点的大小设置为10
ylabel(‘Profit in $10000s’):表示在y轴附上说明

上述plotData()函数执行之后,图像如下:
吴恩达机器学习课后作业第一周ex1答案详解

Part3:

Part3主要是利用梯度下降的方法求出最佳的theta,使得代价函数J的值最小
1、computeCost()用于计算代价函数J

根据ex1data1.txt对应的样例,我们设置hypothesis函数为:

hθ=θTx=θ0+θ1xh_{\theta }=\theta ^{T}x=\theta _{0}+\theta _{1}x
代价函数为:
J(θ)=12mi=1m(hθ(X(i))Y(i))2J\left( \theta \right) =\dfrac {1}{2m}\sum ^{m}_{i=1}\left( h_{\theta }\left( X^{\left( i\right) }\right) -Y^{\left( i\right) }\right) ^{2}

computeCost()函数:
吴恩达机器学习课后作业第一周ex1答案详解
部分命令解释:
(X * thera - Y) .^2中的 .^2表示矩阵对应的每一个数都取平方值
sum():表示对矩阵中的每一个数求和

2、gradientDescent.m:用梯度下降的方法求最佳的theta值,使代价函数的值最小

利用梯度下降求theta的公式如下:
θj:=θjαθjJ(θ)\theta _{j}:=\theta _{j}-\alpha \ast \dfrac {\partial }{\partial \theta _{j}}J\left( \theta \right)

对theta求偏导数的过程如下:

θjJ(θ)=1mi=1m(θTX(i)y(i))xj(i)\dfrac {\partial }{\partial \theta _{j}}J\left( \theta \right) =\dfrac {1}{m}\sum ^{m}_{i=1}\left( \theta ^{T}X^{\left( i\right) }-y^{\left( i\right) }\right) x^{\left( i\right) }_{j}

gradientDescent函数如下:
吴恩达机器学习课后作业第一周ex1答案详解
使用梯度下降求出最佳的theta之后,利用plot函数画出theta拟合的图像:
吴恩达机器学习课后作业第一周ex1答案详解
图像如下:
吴恩达机器学习课后作业第一周ex1答案详解
之后利用求出的theta值就可以进行预测

Part4:

Part4主要对代价函数中各个参数进行可视化操作,观察各个参数对应的代价函数的值

代价函数J随参数theta变化的3D图像:
吴恩达机器学习课后作业第一周ex1答案详解
surf():绘制3D图像,theta0,theta1分别表示第一和第二个参数,J_val表示此时参数对应的代价函数值

代价函数J随参数theta变化的等高线图像:
吴恩达机器学习课后作业第一周ex1答案详解
contour():用于绘制等高线图像
logspace(a,b,n):生成n个点,在10^a 和 10^b之间

3D和等高线图像如下:
吴恩达机器学习课后作业第一周ex1答案详解
吴恩达机器学习课后作业第一周ex1答案详解