(硬着头皮写完了,但是不理解我写的是什么,为什么要这样写?)
1. 简单的Octave / MATLAB功能
ex1.m的第一部分为您提供Octave / MATLAB语法和作业提交过程。在文件warmUpExercise.m中,您将找到Octave / MATLAB函数的轮廓。通过填写以下代码修改它以返回5 x 5的矩阵:
function A = warmUpExercise()
%WARMUPEXERCISE Example function in octave
% A = WARMUPEXERCISE() is an example function that returns the 5x5 identity matrix
A = [];
% ============= YOUR CODE HERE ==============
% Instructions: Return the 5x5 identity matrix
% In octave, we return values by defining which variables
% represent the return values (at the top of the file)
% and then set them accordingly.
A=eye(5);
% ===========================================
end
完成后,运行ex1.m(假设您位于正确的目录中,在Octave / MATLAB提示符下键入“ ex1”),您应该看到输出类似于以下内容:
现在ex1.m将暂停,直到您按任意键,然后运行代码在下一部分作业中。如果您想退出,请输入ctrl-c在运行过程中停止该程序。
1.1 提交解决方案
完成一部分练习后,您可以提交解决方案通过在Octave / MATLAB命令行中输入Submit进行评分。子任务脚本将提示您输入登录电子邮件和提交令牌并询问您要提交的文件。您可以获取提交网页中用于分配的令牌。
You should now submit your solutions.
您可以多次提交解决方案,我们将采取仅考虑最高分。
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绘制图;修改文件并填写以下代码:
function plotData(x, y)
%PLOTDATA Plots the data points x and y into a new figure
% PLOTDATA(x,y) plots the data points and gives the figure axes labels of
% population and profit.
figure; % open a new figure window
% ====================== YOUR CODE HERE ======================
% Instructions: Plot the training data into a figure using the
% "figure" and "plot" commands. Set the axes labels using
% the "xlabel" and "ylabel" commands. Assume the
% population and revenue data have been passed in
% as the x and y arguments of this function.
%
% Hint: You can use the 'rx' option with plot to have the markers
% appear as red crosses. Furthermore, you can make the
% markers larger by using plot(..., 'rx', 'MarkerSize', 10);
plot(x,y,'rx','MarkerSize',10);
ylabel('Profit in $10,000s');
xlabel('Population of City in 10,000s');
% ============================================================
end
现在,当您继续运行ex1.m时,我们的最终结果应该像图1,带有相同的红色“ x”标记和轴标签。
要了解有关plot命令的更多信息,可以在Octave / MATLAB命令提示符或在线搜索绘图文件。 (要将标记更改为红色的“ x”,我们使用了“ rx”选项连同plot命令,即plot(…,[此处为您的选项],…,“RX”); )
Figure 1: Scatter plot of training data
2.2 梯度下降
在这一部分中,您使用梯度下降将使线性回归参数θ适合我们的数据集。
2.2.1 更新方程式
线性回归的目的是最小化代价函数。
J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(θ) =\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^{2} J(θ)=2m1∑i=1m(hθ(x(i))−y(i))2
假设hθ(x)由线性模型给出
h θ ( x ) = θ T x = θ 0 + θ 1 x 1 h_{\theta}(x)=\theta^{T}x=\theta_{0}+\theta_{1}x_{1} hθ(x)=θ