需要帮助找出我在带有一个变量的线性回归的Gradescent Descent代码中做错了什么

时间:2019-06-30 14:30:22

标签: machine-learning octave linear-regression

我已经注册了吴安德(Andrew Ng)的机器学习课程。有一个作业,我当然完成了……但是我之前使用的代码无法正常工作……最后,我不得不在Internet上寻找正确的答案。

但是无论如何,从“不起作用”开始,我的意思是它在解决特定问题,但是事情是,当他们检查我的代码时,他们拥有不同的训练集,因此我的代码应与所有类型的训练集一起使用为了被认为是正确的代码。但是问题是我的代码无法与其他训练集一起使用。

现在,为了更清楚一点……所有其他训练集都应该只有一个功能……也就是说,我们只需要实现一个变量的线性回归即可。

因此,我做了所有事情,直到需要计算成本函数的那一部分为止。但是当我必须计算梯度下降时,在该函数中,我只需要编写梯度下降步骤的代码即可。

这是我的代码-

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

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

for iter = 1:num_iters

% First Step
Prediction = X*theta;
A = (Prediction - y);

theta(1) = theta(1) - ((alpha * (1/m)) * sum(A' * X(:,1)));

% Second Step
Prediction = X*theta;
A = (Prediction - y);

theta(2) = theta(2) - ((alpha * (1/m)) * sum(A' * X(:,2)));



J_history(iter) = computeCost(X, y, theta);

end

end

这是正在运行的代码,我在Internet上发现了这些代码……仅来自Stack Overflow中的一个线程-

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

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

for iter = 1:num_iters

Prediction = X*theta;
A = (Prediction - y);

theta = theta - ((alpha * (1/m)) * (A' * X)');


J_history(iter) = computeCost(X, y, theta);

end

end

从我的代码中可以看到,它应该可以正常工作...但是不知道为什么它不能与其他训练集一起使用?因为无论有多少训练示例,它总是将成为列向量,或者如果我们加x0则为m * 2。所以我看不到我的代码如何工作?

0 个答案:

没有答案