matlab 散点图 线性回归图_吴恩达机器学习编程作业ex1-Matlab版
1 简单的Octave / MATLAB功能
ex1.m的第一部分为Octave/MATLAB作业提交练习。 在文件warmUpExercise.m中,找到Octave / MATLAB函数的提纲处。 填写下面的代码,修改为返回5 x 5的单位矩阵:
A = eye(5,5)
完成后,运行ex1.m(假设命令窗口位于正确的目录中,在Octave / MATLAB命令窗口输入“ ex1”),将看到类似于以下内容的输出:
1.1 提交答案
完成练习的一部分后,在Octave / MATLAB命令行中通过输入 Submit() 来提交作业答案。 提交脚本将提示您输入登录电子邮件和提交令牌(在COURSERA网站查看),并询问是否提交的文件。
现在,提交解决方案。
可以多次提交解决方案,只会考虑最高分。
2 单变量线性回归
在本练习的这一部分中,将使用一个变量实现线性回归,以预测食品卡车的利润。 假设您是一家餐饮连锁店的CEO,并且正在考虑将不同的城市开设新的门店。 该连锁店已经在各个城市开了卡车,您可以获得城市的利润和人口数据。您想使用此数据来帮助您选择要扩展到下一个城市。
文件 ex1data1.txt 包含线性回归问题的数据集。 第一列是城市的人口,第二列是该城市的食物卡车的利润。 利润的负值表示损失。已经设置了ex1.m脚本来为您加载此数据。
2.1 绘制数据
在开始任何任务之前,通过可视化了解数据通常很有用,对于此数据集,您可以使用散点图来可视化数据,因为它仅具有两个要绘制的属性(利润和总体)。(您在现实生活中会遇到的许多其他问题是多维的,无法在二维绘图中绘制。)
在 ex1.m 中,数据集从数据文件加载到变量X和y中:
data = load('ex1data1.txt'); %加载ex1data1.txt数据
X = data(:, 1); y = data(:, 2); %取第一列的全部数据为X,第二列为y
m = length(y); %m等于训练样本个数
接下来,脚本调用 plotData 函数创建数据的散点图。 您的工作是完成plotData.m绘制图; 在以下代码中修改文件并填充文件:
plot(x, y, 'rx', 'MarkerSize', 10);
ylabel('Profit in $10,000s'); %设定y轴标题
xlabel('Population of City in 10,000s'); %设定x轴标题
现在,当您继续运行ex1.m时,我们的最终结果应下图所示,带有相同的红色“ x”标记和轴标签。
要了解有关plot命令的更多信息,可以在Octave / MATLAB命令提示符下键入help plot或在线搜索绘图文件。 (要将标记更改为红色的“ x”,我们将选项“ rx”与plot命令一起使用,即plot(..,[此处为您的选项],..,“ rx”);)
2.2 梯度下降
在这一部分中,您将使用梯度下降法将线性回归参数θ拟合到我们的数据集中。
2.2.1 更新公式
线性回归的目的是最小化成本函数:
回想一下,模型的参数是
随着梯度下降的每一步,您的参数
实施注意:我们将每个示例作为一行存储在Octave / MATLAB的X矩阵中。 为了考虑截距项(
2.2.2 实施
在ex1.m中,我们已经设置了用于线性回归的数据。 在接下来的几行中,我们向数据添加另一个维,以适应θ0截距项。 我们还将初始参数初始化为0,将学习率alpha初始化为0.01。
X = [ones(m, 1), data(:,1)]; % 在x中添加一列
theta = zeros(2, 1); % 初始化拟合参数
iterations = 1500;
alpha = 0.01;
2.2.3 计算成本函数
当执行梯度下降以最小化成本函数时,通过计算成本来监控收敛是有帮助的。 在本节中,将实现一个计算
任务是完成文件 computeCost.m 中的代码,该文件是一个计算
完成后,下一步 ex1.m 将使用初始化为零的 θ 运行一次computeCost,然后您应该会看到代价函数值为32.07。
现在,您应该提交解决方案。
function J = computeCost(X, y, theta)
%COMPUTECOST Compute cost for linear regression
% J = COMPUTECOST(X, y, theta) computes the cost of using theta as the
% parameter for linear regression to fit the data points in X and y% Initialize some useful values
m = length(y); % number of training examples% You need to return the following variables correctly
J = 0;% ====================== YOUR CODE HERE ======================
% Instructions: Compute the cost of a particular choice of theta
% You should set J to the cost.J = (1/(2*m)) *((X * theta-y)'*(X*theta-y));% ============================================================
end
2.2.4 梯度下降
接下来将在文件 gradientDescent.m 中实现梯度下降。已经编写了循环结构,只需要在每次迭代中为θ提供更新。
在编程时,请确保了解要优化的内容和更新的内容。记住成本
验证梯度下降是否正常工作的一种好方法是查看
gradientDescent.m 的起始代码在每次迭代时都调用 computeCost 并计算代价函数值。假设您正确实现了梯度下降和 computeCost,则
完成后,ex1.m将使用最终参数来绘制线性拟合。结果应类似于下图:
最终的θ值也将用于预测35,000和70,000人区域的利润。请注意,ex1.m中的以下几行使用矩阵乘法而不是显式求和或循环来计算预测。这是Octave / MATLAB中代码向量化的示例。
现在,提交答案
predict1 = [1, 3.5] * theta;
predict2 = [1, 7] * theta;
function [theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters)
%GRADIENTDESCENT Performs gradient descent to learn theta
% theta = GRADIENTDESCENT(X, y, theta, alpha, num_iters) updates theta by
% taking num_iters gradient steps with learning rate alpha% Initialize some useful values
m = length(y); % number of training examples
J_history = zeros(num_iters, 1);for iter = 1:num_iters% ====================== YOUR CODE HERE ==================% Instructions: Perform a single gradient step on the parameter vector% theta. %% Hint: While debugging, it can be useful to print out the values% of the cost function (computeCost) and gradient here.%theta = theta - (alpha/m) * (X'*(X*theta-y));% ========================================================% Save the cost J in every iteration J_history(iter) = computeCost(X, y, theta);
end
end
2.4 可视化
为了更好地理解成本函数
在 ex1.m 的下一步中,设置了代码,以使用您编写的computeCost函数在值的网格上计算
执行完这些行后,将拥有
这些图的目的是展示
如有问题,欢迎私信交流。
matlab 散点图 线性回归图_吴恩达机器学习编程作业ex1-Matlab版相关推荐
- 吴恩达机器学习视频作业(Matlab实现)
吴恩达机器学习视频的课后作业,使用matlab实现 ex1 线性回归 1.热身 建立一个5*5矩阵 A=eye(5); 2.单变量的线性回归 需要根据城市人口数量,预测开小吃店的利润 数据在ex1d ...
- 吴恩达机器学习课后作业ex1(python实现)
作业介绍 吴恩达老师的作业资源可以在github或者网上找到 . ex1主要是对线性回归的一些复习和梯度下降.损失函数等的具体代码实现. pdf文件是对作业的说明.文件夹则是作业数据的各种格式,pyt ...
- 吴恩达机器学习编程题ex1上 单变量线性回归: (python版含题目要求、代码、注解)
不得不说安卓老师是真的用心良苦,给我们把编程题弄成了填空题,但是很可惜原版使用的是Octave和MATLAB所以作为初学者我就直接当编程题用python去做了 问题:让你绘制一个5阶单位阵 答案: ...
- Python学习--Machine-Learning 吴恩达机器学习编程作业 (第六周)
Machine-Learning 编程作业 Programming Exercise 6:Support Vector Machines SVM的简单应用 part1 示例文件1使用线性核函数 par ...
- 7. 吴恩达机器学习课程-作业7-Kmeans and PCA
fork了别人的项目,自己重新填写,我的代码如下 https://gitee.com/fakerlove/machine-learning/tree/master/code 代码原链接 文章目录 7. ...
- 1. 吴恩达机器学习课程-作业1-线性回归
fork了别人的项目,自己重新填写,我的代码如下 https://gitee.com/fakerlove/machine-learning/tree/master/code 代码原链接 文章目录 1. ...
- 8. 吴恩达机器学习课程-作业8-异常检测和推荐系统
fork了别人的项目,自己重新填写,我的代码如下 https://gitee.com/fakerlove/machine-learning/tree/master/code 代码原链接 文章目录 8. ...
- 5. 吴恩达机器学习课程-作业5-偏差和方差
fork了别人的项目,自己重新填写,我的代码如下 https://gitee.com/fakerlove/machine-learning/tree/master/code 代码原链接 文章目录 5. ...
- 2.吴恩达机器学习课程-作业2-逻辑回归
fork了别人的项目,自己重新填写,我的代码如下 https://gitee.com/fakerlove/machine-learning/tree/master/code 代码原链接 文章目录 2. ...
最新文章
- 接口优化:Redis预减库存,减少对数据库访问方案
- (Oracle)PL SQL的相关知识与实例
- UIActionSheet
- 比特币钱包私钥_如何通过私钥创建比特币钱包地址
- 科学与技术计算机图片解释,【图片】计算机-科普—都是从网上找的【计算机科学与技术吧】_百度贴吧...
- SpringCloud学习笔记001-SpringCloud_001_SpringCloud简介_单体架构_微服务架构_服务注册与发现_微服务调用关系
- 极通ewebs应用虚拟化系统v6.2完美上市
- 萌新的Python练习菜鸟100例(十二)判断101-200之间有多少个素数,并输出所有素数
- 80多个Ajax解决方案
- 贝叶斯统计(Bayesian statistics) vs 频率统计(Frequentist statistics):marginal likelihood(边缘似然)
- 官网下载storage manager方法
- CCSK云计算安全认证
- hashcat简单使用
- 在 Linux 中如何删除分区
- 世界精神卫生日:不断变化的世界的应用程序
- linux搭建pptp服务器
- panic: interface conversion: interface {} is nil, not chan *sarama.ProducerError
- 对越Altium Designer 17.0.9电路设计软件
- python切片是什么意思_python切片的理解
- 冰点文库----拒绝百度文库会员,高速下载文章
热门文章
- linux系统修改为静态IP地址
- Pandas知识点-统计运算函数
- Extjs可视化设计视频教程一
- ASP.NET中Request.ApplicationPath、Request.FilePath、Request.Path、.Request.MapPath、Server.MapPath的区别
- C# Regex 深入正则表达式
- javascript框架比较(二)
- ndarray的转置(numpy.transpose()与A.T命令对比详解)
- leetcode —— 1013. 将数组分成和相等的三个部分
- 吴恩达深度学习 —— 4.1 深层神经网络
- TensorFlow第九步CNN BP算法学习