Я использую MATLAB для вычисления функции стоимости логистической регрессии, и я не получаю ожидаемый результат при тестировании своего кода.Все мои шаги кажутся логически правильными.Может кто-нибудь помочь мне исправить это?
function [J, grad] = costFunction(theta, X, y)
m = length(y);
J = 0;
grad = zeros(size(theta));
h = sigmoid(X*theta);
total1 = -y'*log(h);
total2 = (1-y)'* (1-log(h));
total3 = total1-total2;
J = total3*1/m;
Это тестовые случаи:
X = [ones(3,1) magic(3)];
y = [1 0 1]';
theta = [-2 -1 1 2]';
% un-regularized
[j g] = costFunction(theta, X, y)
% or...
[j g] = costFunctionReg(theta, X, y, 0)
% results
j = 4.6832
g =
0.31722
0.87232
1.64812
2.23787
Я получаю j = -0,3168 вместо 4,6832