Coursera-AndrewNg(吴恩达)机器学习笔记——第二周编程作业
一.准备工作
- 从网站上将编程作业要求下载解压后,在Octave中使用cd命令将搜索目录移动到编程作业所在目录,然后使用ls命令检查是否移动正确。如:

- 提交作业:提交时候需要使用自己的登录邮箱和提交令牌,如下:

二.单变量线性回归
绘制图形:rx代表图形中标记的点为红色的x,数字10表示标记的大小。
plot(x, y, 'rx', 'MarkerSize', ); % Plot the data
计算代价函数(Cost Funtion):迭代次数1500,学习速率0.01. iterations = 1500; alpha = 0.01;
注意需给原始数据X添加一列值为1的属性:X = [ones(m, 1), data(:,1)]; theta = zeros(2, 1);
function J = computeCost(X, y, theta) %文件名为computeCost.m
m = length(y); % number of training examples
J = /(*m)*sum((X*theta-y).^);
end
梯度下降(Gradient Descent ):
function [theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters) %文件名为gradientDescent.m
m = length(y); % number of training examples
J_history = zeros(num_iters, );
for iter = :num_iters
temp=X'*(X*theta-y);
theta=theta-/m*alpha*temp;
J_history(iter) = computeCost(X, y, theta);
end
end
然后绘制出我们使用经过梯度下降求出的最优参数θ值所做预测的图形,如下:
可视化J(θ):
使用表面图进行可视化:
theta0_vals = linspace(-, , ); %生成范围在[-10,10]之间100个点的线性行矢量,即维数为1*100的矩阵
theta1_vals = linspace(-, , ); %生成范围在[-1,4]之间100个点的线性行矢量,即维数为1*100的矩阵 J_vals = zeros(length(theta0_vals), length(theta1_vals)); %对应的代价函数值,维数为100*100
% Fill out J_vals
for i = :length(theta0_vals) %计算代价函数值
for j = :length(theta1_vals)
t = [theta0_vals(i); theta1_vals(j)];
J_vals(i,j) = computeCost(X, y, t);
end
end % Because of the way meshgrids work in the surf command, we need to transpose J_vals before calling surf, or else the axes will be flipped
J_vals = J_vals'; %surface函数的特性,必须进行转置。其实就是因为θ0和θ1要和行列坐标x,y对齐。
% Surface plot
figure;
surf(theta0_vals, theta1_vals, J_vals) %绘制表面图
xlabel('\theta_0'); ylabel('\theta_1');
结果如下:从图中可看出代价函数值J(θ)有全局最优解(最低点)。
使用等高线图进行可视化:(logspace函数和linspace函数类似,此处作用生成将区间[10-2,103]等分20份的1*20矩阵)
figure; %这里的J_vals在前面进行了转置,所以此处不用转置!
contour(theta0_vals, theta1_vals, J_vals, logspace(-, , ))
xlabel('\theta_0'); ylabel('\theta_1'); %用到了转义字符'\theta_0'和'\theta_1'.
hold on;
plot(theta(), theta(), 'rx', 'MarkerSize', , 'LineWidth', );
结果如下:可以看出我们求出的最优参数θ所对应的代价值,正好位于等高线图最低的位置!
三.多变量线性回归(选做)
特征规则化:
function [X_norm, mu, sigma] = featureNormalize(X) %文件名为featureNormalize.m
X_norm = X;
mu = zeros(, size(X, )); %记录每个特征xi的平均值
sigma = zeros(, size(X, )); %记录每个特征xi的标准差值 for i=:size(X,),
mu(i)=mean(X(:,i)); %使用公式mean求平均值
sigma(i)=std(X(:,i)); %使用公式std求标准差值
X_norm(:,i)=(X_norm(:,i)-mu(i))/sigma(i);
end
end
代价函数和梯度下降:和单变量相同(省略)
不同学习速率下,随着迭代次数的增加,代价函数值逐渐收敛图形:可以发现学习速率为0.01最为合适!

房价预测:Estimate the price of a 1650 sq-ft, 3 br house
% Estimate the price of a sq-ft, br house
% ====================== YOUR CODE HERE ======================
% Recall that the first column of X is all-ones. Thus, it does
% not need to be normalized.
x_try=[ ];
x_try()=x_try()-mu();
x_try()=x_try()-mu();
x_try()=x_try()/sigma();
x_try()=x_try()/sigma();
price = [ones(, ) x_try]*theta; % 这里的theta是我们前面经过梯度下降求出的
正规方程求参数theta:
function [theta] = normalEqn(X, y)
theta = zeros(size(X, ), );
theta=pinv(X'*X)*X'*y;
end
无~
Coursera-AndrewNg(吴恩达)机器学习笔记——第二周编程作业的更多相关文章
- Coursera-AndrewNg(吴恩达)机器学习笔记——第二周编程作业(线性回归)
一.准备工作 从网站上将编程作业要求下载解压后,在Octave中使用cd命令将搜索目录移动到编程作业所在目录,然后使用ls命令检查是否移动正确.如: 提交作业:提交时候需要使用自己的登录邮箱和提交令牌 ...
- Coursera-AndrewNg(吴恩达)机器学习笔记——第二周
一.多变量线性回归问题(linear regression with multiple variables) 搭建环境OctaveWindows的安装包可由此链接获取:https://ftp.gnu. ...
- Coursera-AndrewNg(吴恩达)机器学习笔记——第四周编程作业(多分类与神经网络)
多分类问题——识别手写体数字0-9 一.逻辑回归解决多分类问题 1.图片像素为20*20,X的属性数目为400,输出层神经元个数为10,分别代表1-10(把0映射为10). 通过以下代码先形式化展示数 ...
- Coursera-AndrewNg(吴恩达)机器学习笔记——第一周
一.初识机器学习 何为机器学习?A computer program is said to learn from experience E with respect to some task T an ...
- 吴恩达机器学习笔记(六) —— 支持向量机SVM
主要内容: 一.损失函数 二.决策边界 三.Kernel 四.使用SVM (有关SVM数学解释:机器学习笔记(八)震惊!支持向量机(SVM)居然是这种机) 一.损失函数 二.决策边界 对于: 当C非常 ...
- Machine Learning|Andrew Ng|Coursera 吴恩达机器学习笔记
Week1: Machine Learning: A computer program is said to learn from experience E with respect to some ...
- Machine Learning|Andrew Ng|Coursera 吴恩达机器学习笔记(完结)
Week 1: Machine Learning: A computer program is said to learn from experience E with respect to some ...
- 吴恩达机器学习笔记 —— 19 应用举例:照片OCR(光学字符识别)
http://www.cnblogs.com/xing901022/p/9374258.html 本章讲述的是一个复杂的机器学习系统,通过它可以看到机器学习的系统是如何组装起来的:另外也说明了一个复杂 ...
- [吴恩达机器学习笔记]12支持向量机5SVM参数细节
12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.5 SVM参数细节 标记点选取 标记点(landma ...
随机推荐
- Zookeeper实现数据的发布和订阅
使用场景 当一个对象的改变,需要通知其他对象而且不知道要通知多少个对象,可以使用发布订阅模式 .在分布式中的应用有配置管理(Configuration Management) .集群管理 ...
- iOS开发的10个知识点
1.关于关键字volatile 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了.精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这 ...
- wing带你玩转自定义view系列(3)模仿微信下拉眼睛
发现了爱神的自定义view系列,我只想说一个字:凸(艹皿艹 ) !!相见恨晚啊,早看到就不会走这么多弯路了 另外相比之下我这完全是小儿科..所以不说了,这篇是本系列完结篇....我要从零开始跟随爱哥脚 ...
- (十)弹出框Alert与ActionSheet
第一种方式:中间弹窗 从中间弹出的窗口称为AlertView. 可以设置多个按钮,取消按钮会放在对右端或者最下端,按钮超过两个,会竖着排列. UIAlertView *alert = [[[UIAle ...
- OC语言(五)
三十七.SEL类型-方法的包装 发送消息其实就是发送SEL. 每个方法都有与之对应的SEL类型数据. 第一次调用方法,先把方法包装成为SEL数据,再根据SEL去找方法地址,最后根据方法地址调用相应的方 ...
- vim的颜色修改,高亮设置。
在vim.org 搜一下,下载一个color scheme, 放到~/.vim/colors/下(linux)或者$HOME/.vim/colors/下(windows) 再在你的.vimrc文件中加 ...
- DBUtils学习总结
这几天闲着无聊,就看了一下DBUtils这个数据库组件.中间有了一些想法,现在记录下来. 文章主要分几部分 1 最简单同时也是最经常使用的一些范例 2 学习源码前的一些知识储备 3 我自己写的mydb ...
- AngularJS进阶(二)AngularJS路由问题解决
AngularJS路由问题解决 遇到了一个棘手的问题:点击优惠详情时总是跳转到药店详情页面中去.再加一层地址解决了,但是后来发现问题还是来了: Could not resolve 'yhDtlMain ...
- LM**项目开发感悟
LM**项目开发感悟 经过一个多月的项目开发,自己主要负责服务端业务逻辑的实现.服务端采用纯servlet完成,自己是在已有的项目架构上进行编程,对于所使用的架构,自己还没有认真的研究过,但明白其用到 ...
- ITU-R BT.1788建议书 对多媒体应用中视频质量的主观评估方法
ITU-R BT.1788建议书 对多媒体应用中视频质量的主观评估方法 (ITU‑R 102/6号研究课题) (2007年) 范围 数字广播系统允许提供多媒体和数据广播应用,包括视频.音频.静态图像. ...