机器学习 - 编程练习(一):线性回归

这篇博客是关于机器学习的编程练习,重点介绍了线性回归的实现。通过单变量和多元线性回归,讲解了数据可视化、梯度下降、成本函数计算以及特性一般化的过程。此外,还提供了Octave/MATLAB的相关函数和练习,帮助读者掌握线性回归模型的构建和优化。

编程练习(一):线性回归


文件清单

  • ex1.m
  • ex1_multi.m
  • ex1data1.txt - ex1.m 用到的数据组
  • ex1data2.txt - ex1_multi.m 用到的数据组
  • submit.m - 提交代码
  • [*] warmUpExercise.m
  • [*] plotData.m
  • [*] computeCost.m
  • [*] gradientDescent.m
  • [+] computeCostMulti.m
  • [+] gradientDescentMulti.m
  • [+] featureNormalize.m
  • [+] normalEqn.m

* 为必须要完成的
+ 为可选

1 简单的Octave/MATLAB函数

完成 warmUpExercise.m ,使得 A 为 5x5 单位矩阵,送分的。

A = eye(5); 

输出结果:

ans =
Diagonal Matrix
    1   0   0   0   0
    0   1   0   0   0
    0   0   1   0   0
    0   0   0   1   0
    0   0   0   0   1

1.1 提交代码

使用 submit

解决不能上传的问题:

Windows

进入练习的 /lib 文件夹中,编辑 submitWithConfiguration.m 修改第66行,然后重启octave

responseBody = urlread(submissionUrl, 'post', params);
% 改为
[code, responseBody] = system(sprintf('echo jsonBody=%s | curl -k -X POST -d @- %s', body, submissionUrl));

OSX Linux

进入练习的 /lib 文件夹中,编辑 submitWithConfiguration.m 修改第66行,然后重启octave

responseBody = urlread(submissionUrl, 'post', params);
% 改为
[code, responseBody] = system(sprintf('echo ''jsonBody=%s'' | curl -k -X POST -d @- %s', body, submissionUrl));

2 单变量线性回归

背景:假设我们现在是个连锁餐厅的老板,已经在很多城市开了连锁店(提供训练组),现在想再开新店,需要通过以前的数据预测新开的店的收益。

ex1data1.txt 提供所需要的训练组,第一列是城市人口,第二列是对应的收益。负值代表着亏损。

ex1.m 已经加载了数据。

2.1 可视化数据

ex1.m 中加载了变量 X 和 y:

data = load('ex1data1.txt'); % read comma separated data
X = data(:, 1); y = data(:, 2);
m = length(y); % number of training examples

接着 plotData 函数将其绘制出来,我们需要完成 plotData.m 进行绘图:

plot(x, y, 'rx', 'MarkerSize', 10); % Plot the data
ylabel('Profit in $10,000s'); % Set the y-axis label
xlabel('Population of City in 10,000s'); % Set the x-axis label

现在运行 ex1.m 就能看到类似图1的图像了:

* 通过看手册学习函数是个很好的方式 help plot

2.2 梯度下降

在这一结中我们要通过梯度下降计算出合适的线性回归参数theta。

2.2.1 更新等式

线性回归的目标是将成本函数最小化:

J(θ)=12mi<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值