使用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
这是sigmoid函数:
function h=sigmoid(z)
h = (1 + exp(-1 *z)).^(-1);
end
最后,我将costFunction应用于fminunc,其格式如下图所示(enter image description here)。但是,奇怪的是它说我在costFunction中的X * theta的内部矩阵尺寸是错误的(之前很好)。我很欣赏你的一些解决方案或想法。
答案 0 :(得分:1)
请在fminunc里面控制匿名函数调用中参数的顺序。
在你的功能" costFunction"他们是X,y,theta; 当你调用fminunc(@(t)costFunction(t,X,y)...)时,你分别有X和y作为第二和第三个参数。
希望这有帮助。