首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

线性回归代码解析

1. 原理

线性回归其实就是寻找一条直线拟合数据点,使得损失函数最小。

2.实现

本次实验采用matlab作为工具,代码及解析如下:

x=load('Gx.dat');%取出年份,形成一个14×1的矩阵

x=(x-1999)/14;%年份做预处理,讲年份的数值和房价统一在同一个数量级

length=size(x,1);% length为x的维度,此处length=14

x1=[x,ones(14,1)];%x1是对x的处理,形成了14×2的矩阵,第二列都为1,因为在hypothesis中h=theta1×1+theta2×xi的。

y1=load('Gy.dat');%取出房价,形成一个14×1的矩阵

alpha=0.1;%学习率,即步长

theta=[0;0];%定义了一个2×1的矩阵,theta(1)为theta1,theta(2)为theta2。

maxgen=40;%定义了迭代次数

axis([2000,2014,0,16]);%固定坐标轴

fori = 1:maxgen

scatter(x*14+1999,y1);%描点

holdon;

a =linspace(2000,2016,16);

e=x1*theta-y1;%error,x1是一个14×2的矩阵,theta是一个2×1的矩阵,x1*theta得到矩阵14×1矩阵,减去y1等到e即为每维上的error。

theta=theta-alpha*(e'*x1)';%更新theta,主要是对矩阵的操作

cost=sum(e'*e)/2;%算出损失函数J

b = theta(2) +theta(1) * (a-1999)/14;

disp(cost);

plot(a,b);%画直线

pause(0.5);%暂停0.5秒,方便效果展示

if(i

plot(a,b,'w');%设置刚画线的为白色,隐藏直线

end

end

disp('2015年的房价估计在');

disp(theta(2) + theta(1) * (2015-1999)/14);%输出预测房价

注:红色标记代码为关键代码

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171218G0R16D00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券