机器学习 Linear Regression——线性回归实验

完整的数据和代码已经更新至GitHub,欢迎fork~GitHub链接

This first exercise will give you practice with linear regression

实验内容

一、下载提供的数据,读入数据,画出相应的坐标点

二、使用数据,拟合出一条直线来,使用机器学习所讲的线性回归的方法来拟合出一条直线

三、理解损失函数,通过数据来画出损失函数的图像,进行可视化

实验步骤

一、读入数据,然后使用plot函数,画出散点图

如下图所示:
在这里插入图片描述

二、 使用以下规则,更新 theta,先对x多增加一列,实现x的维数和theta的维数可以实现乘法,在使用如下的公式来更新 theta
h θ ( x ) = θ T x = ∑ i = 0 n θ i x i , θ j = θ j − α ∗ 1 m ∑ i = 1 n ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) h_{\theta}(x)=\theta^Tx=\sum_{i=0}^{n}\theta_ix_i, \\ \theta_j=\theta_j-\alpha*\frac{1}{m}\sum_{i=1}^{n}(h_\theta(x^{(i)})-y^{(i)})x_{j}^{(i)} hθ(x)=θTx=i=0nθixi,θj=θjαm1i=1n(hθ(x(i))y(i))xj(i)
一共更新1500轮,最后通过plot函数来画出函数图像
在这里插入图片描述
这就是我们拟合出来的函数图像,显示拟合效果还是不错的,而且loss函数也是一直在减小的

三、画出损失函数的图像,使用,以下数据:

J_vals=zeros(100,100);
theta0=linspace(-3,3,100);
theta1=linspace(-1,1,100);
#损失函数,定义为(y^-y)2 再求和,除以2*m,即为损失函数:
loss=@(theta,x,y) mean((h(x,theta)-y).^2)/2;

因为这是三维图像,使用surf函数进行画图,结果如下:
在这里插入图片描述
在这里插入图片描述

通过观察,我们会发现,损失函数,是从各个方向趋于一个最小值,而这个最小值,正是我们需要达到的目标。

附:完整源代码

x = load ( 'F:\\Machine Learning\\exp\\ex1Data\\ex1x.dat') ; %50维
y = load ( 'F:\\Machine Learning\\exp\\ex1Data\\ex1y.dat') ; %50维
figure % open a new f i g u r e window
plot (x , y , ' o ' ) ;
ylabel ( 'Height in meters ')
xlabel ( 'Age in years ' )
u=0;
m=length(y); 
x=[ones(m,1),x]; % 50*2维度
h=@(x,theta) x*theta;
alpha=0.07;
theta=zeros(2,1); % 2*1维度
loss=@(theta,x,y) mean((h(x,theta)-y).^2)/2;
iteration=@(theta,alpha,y,x) theta-alpha*(x'*(h(x,theta)-y))/m;

for j=1:1500
    theta=iteration(theta,alpha,y,x);
end
hold on
plot(x(:,2),x*theta,'-');
legend( ' Training data ' , ' Linear regression' );

J_vals=zeros(100,100);
theta0=linspace(-3,3,100);
theta1=linspace(-1,1,100);
for i=1:length(theta0)
for j=1:length(theta1)
    t=[theta0(i);theta1(j)];
    J_vals(i,j)=loss(t,x,y);
end
end
J_vals =J_vals';
figure ;
surf (theta0, theta1, J_vals);
xlabel ( 'ntheta0' ) ; ylabel ( 'ntheta1' );
      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值