【发布时间】:2020-10-10 11:56:02
【问题描述】:
我在 Octave 中编写了一个简单的线性回归算法,但无论我选择什么样的学习率和迭代次数,甚至在纸上画出矩阵,theta 的值都不会收敛。任何人都可以看到我的代码中的任何错误吗?
data = load('ex1data2.txt');
X = data(:,1:2);
y = data(:,3);
m = rows(X);
X = [ones(m,1), data(:,1:2)];
alpha = 0.01;
iterations = 5000;
n = columns(X);
theta = zeros(n,1);
for count = 1:iterations
hypo = zeros(1,m);
hypo = theta'*X';
sqr_err = (hypo-y').*(hypo-y');
sum_sqr_err = sum(sqr_err);
J = 1/(2*m)*sum_sqr_err;
for i = 1:n
theta(i) = theta(i)-(alpha/m)*((hypo-y')*X(:,i));
end
end
J
theta
谢谢。
【问题讨论】:
-
您需要提供一组输入数据。您的代码应该有 cmets,以便我们了解您想要做什么。
-
附带说明,使用ordinary least square method 或标准化方程将更容易编码。
标签: machine-learning octave linear-regression gradient-descent