1
我正在實現邏輯迴歸函數的一部分,但似乎無法獲得除-inf之外的其他任何內容。不知道如何獲得其他任何東西,因爲如果有1個輸出,那麼日誌(1-1)會將它變成-inf。在物流壓扁函數中避免無窮大
有什麼想法?
% Calculates error based on X, Y, theta
function error = empRisk(X,Y, theta)
n = length(X);
error = 0;
for i=1: n
y = Y(i,:);
x = X(i,:);
binLoss = classify(theta,x);
part1 = y-1;
part2 = log(1-binLoss);% -Inf if 1-1??
part3 = y*(log(binLoss));
error = error + ((part1*part2)-part3);
end
error = error*(1/n);
end
% Implements the classification function
function value = classify(theta, x)
z = dot(theta,x);
result = (1/(1+exp(-z)));
% Output 0,1 based on result
if result >= 0.5
value = 1;
else
value = 0;
end
end
這裏是公式empRisk是應該做的事情:
這聽起來更像是一個算法問題,而不是一個編程問題。你的分類功能是否正確?也許'binLoss'應該是'result'變量?你能給出一個鏈接來描述你試圖實現的算法嗎? – David 2014-09-30 02:24:03