在使用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作为第二个和第三个参数。

希望这可以帮助。

07-27 13:22