在向量中存储成本历史记录

时间:2016-08-30 23:27:11

标签: octave

我在gradientDescent文件的Octave中为.m编写了以下代码,如下所示:

function [theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters)

% Test values:

X = [1 5; 1 2; 1 4; 1 5];
y = [1 6 4 2]';
theta = [0 0]';
alpha = 0.01;
num_iters = 1000;

% Initialize some useful values:

m = length(y); % number of training examples
J_history = zeros(num_iters, 1);

for iter = 1:num_iters
    x = X(:,2);
    h = theta(1) + (theta(2)*x);
    theta_zero = theta(1) - alpha * (1/m) * sum(h-y);
    theta_one  = theta(2) - alpha * (1/m) * sum((h - y) .* x);
    theta = [theta_zero; theta_one];
    % ============================================================     
    % Save the cost J in every iteration         
    J_history(iter) = computeCost(X, y, theta); % History of  J
end
disp(min(J_history));

end

% Code for computeCost function is as follows:

function J = computeCost(X, y, theta)
data = 
6.1101   17.5920
5.5277    9.1302
8.5186   13.6620
7.0032   11.8540
5.8598    6.8233
8.3829   11.8860
7.4764    4.3483
8.5781   12.0000
6.4862    6.5987
m = length(y);    
J = 0;
X = data(:, 1); 
y = data(:, 2);

predictions = X*theta';              % predictions of hypothesis on examples
sqrErrors   = (predictions - y).^2;  % squared errors

J = 1/(2*m) * sum(sqrErrors);

end

当我从八度工作区运行时,我收到以下错误:

Error: A(I) = X: X must have the same size as I
error: called from
gradientDescent at line 55 column 21

我做了很多事情,但没有成功,导师从来没有正确回复过。

你能否告诉我在哪里犯了错误。

提前致谢。

巴勒特。

0 个答案:

没有答案