Coursera machine learning 第二周 编程作业 Linear Regression

Posted smartweed

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Coursera machine learning 第二周 编程作业 Linear Regression相关的知识,希望对你有一定的参考价值。

必做:

[*] warmUpExercise.m - Simple example function in Octave/MATLAB
[*] plotData.m - Function to display the dataset
[*] computeCost.m - Function to compute the cost of linear regression
[*] gradientDescent.m - Function to run gradient descent

 

1.warmUpExercise.m

A = eye(5);

 

2.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

 

 

3.computeCost.m

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.

H = X*theta-y;
J = (1/(2*m))*sum(H.*H);

% =========================================================================

end

公式:   

注意matlab中  .* 的用法。

 

4.gradientDescent.m

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.
    
     H = X*theta-y;
    theta(1)=theta(1)-alpha*(1/m)*sum(H.*X(:,1));
    theta(2)=theta(2)-alpha*(1/m)*sum(H.*X(:,2)); % ============================================================ % Save the cost J in every iteration J_history(iter) = computeCost(X, y, theta); end end

单变量梯度下降

对函数J(θ)求偏导  

H.*X(:,1)

θi向着梯度最小的方向减少,alpha为步长。

theta(i)=theta(i)-alpha*(1/m)*sum(H.*X(:,i));

 

以上是关于Coursera machine learning 第二周 编程作业 Linear Regression的主要内容,如果未能解决你的问题,请参考以下文章

Coursera - Machine Learning, Stanford: Week 5

Coursera - Machine Learning, Stanford: Week 11

Coursera - Machine Learning, Stanford: Week 10

Coursera《machine learning》--逻辑回归

coursera—吴恩达Machine Learning笔记(4-6周)

Coursera machine learning 第二周 quiz 答案 Octave/Matlab Tutorial