matlab举例logistic regression
LR的推理这里不说了,自己查查吧。或者看http://blog.****.net/redfivehit/article/details/73946956
结论是weight = weight + alpha * weight的偏导数 = weight + alpha * (y- sigmoid(wTx))*x,这里w和x是向量,代码中就是这么实现的。如果是数字,这个公式alpha后面也写成Xi各个变量计算的求和,
data = load('data1.txt');
[row , col] = size(data);
dataMat = data(:,1:col-1);
dataMat = [ones(row,1) dataMat] ;
labelMat = data(:,col);
alpha = 0.001;
maxCycle = 500;
weight = ones(col,1);
for i = 1:maxCycle
returnVals = 1.0./(1.0+exp(-(dataMat * weight)'));
h = returnVals;
error = (labelMat - h');
weight = weight + alpha * dataMat' * error;
end
figure
scatter(dataMat(find(labelMat(:) == 0),2),dataMat(find(labelMat(:) == 0),3),15,'b');
hold on
scatter(dataMat(find(labelMat(:) == 1),2),dataMat(find(labelMat(:) == 1),3),15,'r');
hold on
x = -3:0.1:3;
y = (-weight(1)-weight(2)*x)/weight(3);
plot(x,y)
hold off
运行结果