将fminunc应用于costFunction进行Logistic回归

时间:2017-03-30 17:26:40

标签: matlab machine-learning

使用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的内部矩阵尺寸是错误的(之前很好)。我很欣赏你的一些解决方案或想法。

1 个答案:

答案 0 :(得分:1)

请在fminunc里面控制匿名函数调用中参数的顺序。

在你的功能" costFunction"他们是X,y,theta; 当你调用fminunc(@(t)costFunction(t,X,y)...)时,你分别有X和y作为第二和第三个参数。

希望这有帮助。