在使用Mac版本的Matlab_R2016a进行机器学习课程的编码逻辑回归时,遇到了一个问题。
首先,这是我的costFunction代码,可以很好地返回成本和梯度:
function [J,grad] = costFunction(X, y, theta)
% Initialize some useful values
h=sigmoid(X*theta);
m = length(y); % number of training examples
grad = m^(-1) * ((h-y)'*X)';
J=sum(-y.*log(h)-(1-y).*log(1-h))/m;
end
这是S形函数:
function h=sigmoid(z)
h = (1 + exp(-1 *z)).^(-1);
end
最后,在下图(enter image description here)中,将costFunction应用于fminunc的形式如下。但是,奇怪的是,它说我在costFunction中X * theta的内部矩阵尺寸是错误的(以前很好)。我感谢您的一些解决方案或想法。
最佳答案
请在fminunc中控制匿名函数调用中参数的顺序。
在您的函数“ costFunction”中,它们是X,y,theta;
当您调用fminunc(@(t)costFunction(t,X,y)...)时,您分别将X和y作为第二个和第三个参数。
希望这可以帮助。