吴恩达机器学习ex1
前言:此次机器学习是本人第一次接触matlab 所以以下的代码中会有对于一些matlab函数的解释
ex1_m:
Par1:
图中部分命令解释:
pause:表示程序执行到此处时停止,用于按任意键可以继续执行
上图函数 warmUpExercise() 函数表示求出一个 5 x 5 的单位矩阵
warmUpExercise():
Part2:
Part2部分是对 ex1data1.txt文件中的样例来绘制相关的图像,直观的看出样例的分布情况
上图表示的是ex1data1.txt中的样例,第一列表示样例的特征值,第二列表示样例的结果
图中部分命令解释:
data = load(‘ex1data1.txt’):表示将ex1data1.txt中的数据以矩阵的形式存放在data中
X = data(:,2):表示将data中的第一列的全部的数据存放在X中
m = length(y):length()函数表示求取vector的长度,如何函数中的参数为矩阵,则只会求矩阵有多少列
plotData(X,y):
图中部分命令解释:
figure:表示创建一个绘图的窗口
plot():表示绘制一个2D图像,前两个参数X,Y的数据分别对应到2D图像中X和Y轴上的数据,rx中r表示使用red颜色,x表示以 ‘X’ 标志绘制点,‘MarkerSize’ 10 表示将点的大小设置为10
ylabel(‘Profit in $10000s’):表示在y轴附上说明
上述plotData()函数执行之后,图像如下:
Part3:
Part3主要是利用梯度下降的方法求出最佳的theta,使得代价函数J的值最小
1、computeCost()用于计算代价函数J
根据ex1data1.txt对应的样例,我们设置hypothesis函数为:
代价函数为:
computeCost()函数:
部分命令解释:
(X * thera - Y) .^2中的 .^2表示矩阵对应的每一个数都取平方值
sum():表示对矩阵中的每一个数求和
2、gradientDescent.m:用梯度下降的方法求最佳的theta值,使代价函数的值最小
利用梯度下降求theta的公式如下:
对theta求偏导数的过程如下:
gradientDescent函数如下:
使用梯度下降求出最佳的theta之后,利用plot函数画出theta拟合的图像:
图像如下:
之后利用求出的theta值就可以进行预测
Part4:
Part4主要对代价函数中各个参数进行可视化操作,观察各个参数对应的代价函数的值
代价函数J随参数theta变化的3D图像:
surf():绘制3D图像,theta0,theta1分别表示第一和第二个参数,J_val表示此时参数对应的代价函数值
代价函数J随参数theta变化的等高线图像:
contour():用于绘制等高线图像
logspace(a,b,n):生成n个点,在10^a 和 10^b之间
3D和等高线图像如下: