我正在尝试使用 Andrew NG 使用 Octave 的机器学习来编写我自己的逻辑回归算法。讲座。所以我所做的是制作一个 csv 文件,第一行是一些参数,第二行是结果:
121,1
124,0
97,0
104,0
110,0
...
总的来说只有 24 个例子,但我选择了一些可以遵循某些模式的点。
这是我的代码:
data = load('data.dat');
x = data(:, 1);
y = data(:, 2)
m = length(y);
#plot(x, y, 'rx', 'MarkerSize', 10);
#xlabel('IQ');
#ylabel('Pass/Fail');
#title('Logistic Regression');
x = [ones(size(x, 1), 1) x];
alpha = 0.00001;
i = 15000;
g = inline("1 ./ (1 + exp(-z))")
theta = zeros(size(x(1, :)))';
j = zeros(i, 1);
for num = 1:i
z = x * theta;
h = g(z);
j = (1./m) * ( -y' * log( h ) - ( 1 - y' ) * log ( 1 - h))
grad = 1./m * x' * (h - y);
theta = theta - alpha * grad;
end
然而,sigmoid 函数的输出显示每个值都低于 0.5……这肯定是错误的。我也尝试过不同的学习率和迭代,但无济于事。代码或数据有什么问题?
帮助将不胜感激。