吴恩达机器学习总结五:单变量线性回归实战

线性回归实战总结:
单变量线性回归:
1、加载和查看数据(准备工作)

data = load(‘ex1data1.txt’);
x=data(:,1);
y=data(:,2);
plot(x,y,’rx’,’markersize’,10);
xlabel(‘population’);
ylabel(‘profit’);
这里写图片描述
2、定义代价函数(准备工作,递归下降的时候要调用)
定义输入:X,y,参数theta
单变量线性回归定义式:这里写图片描述
这里可以看出参数为2*1矩阵,为方便矩阵计算,因为x的列数要等于θ的行数
所以假设x0=1,即θ0=θ0*x0,把所有x最左边加一列1,扩展为两列的X矩阵
m=length(x) //获得x矩阵的行数
X=[ones(m,1),x]; //构造一个跟x相同行数的全1的列向量,并和x合并成X矩阵
theta=zeros(2,1);//构造2*1的零矩阵theta
定义输出:计算在当前参数theta的情况下,系统的代价函数值
这里写图片描述
function J = computeCost(X, y, theta)
J=0; //初始化代价函数值J
m=length(y) //计算样本个数,就是上式中的m,后边要用
predict = X*theta; //计算根据当前参数计算出的预测值
J = sum((predict-y).^2)/(2*m) //计算上式,返回代价函数值
end
3、递归下降法寻找参数局部最优解
这里写图片描述(参数迭代方程)
定义迭代下降函数:
定义输入:X,y,theta(计算代价函数),alpha,iterations
其中α确定每次迭代的步长,这里暂设为0.01
还要指定迭代次数,因为可能永远迭代不完,暂定为1500次
alpha=0.01;
iterations=1500;
定义输出:theta(最终求得参数构造预测函数)、J_history(记录代价函数值,用于检验)
function [theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters)
m = length(y);
J_history = zeros(num_iters,1);
for i = 1:num_iters
theta = theta-alpha/m*(X’*(X*theta-y));
J_history(i,1)=computeCost(X,y,theta);
end
end
在函数中调用:
[theta,J_history]=gradientDescent(X,y,theta,alpha,iterations);
4、检验迭代过程是否正确
绘制每一步迭代的代价函数值的变化图,看代价函数值是不是一直在下降:
这里写图片描述
将参数带入表达式,用表达式进行预测:
这里写图片描述
按照预测方程将原始数据的属性带进去,得到预测值,发现就在那条直线上,然后与真实数据差异较大,因为真实数据可能本来也不是线性关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值