Logictic回归不适合我的数据

时间:2016-06-25 16:12:49

标签: python machine-learning logistic-regression

我正在尝试适合我的数据,但我无法适应它。数据集

0.50,0
0.75,0
1.00,0
1.25,0
1.50,0
1.75,0
1.75,1
2.00,0
2.25,1
2.50,0
2.75,1
3.00,0
3.25,1
3.50,0
4.00,1
4.25,1
4.50,1
4.75,1
5.00,1
5.50,1

和我的代码

data = np.loadtxt('dat', delimiter=',',dtype=None);

x=data[:,0:1];
y=data[:,1].reshape(x.size/x[0].size,1);
a=np.ones(shape=(y.size,x[0].size+1));
a[:,1:2]=x;
q=np.ones(shape=(a.shape[1],1));
alpha=0.003

for i in range(500000):
    h=1/(1+np.exp(-np.dot(a,q)))
    for j in range(q.size):
        q[j][0]=q[j][0]-alpha*np.sum((h-y)*a[:,j]);
plt.axis((-1,10,-1,5))
plt.plot(x,y,'x',x,h);
plt.show();

所以我尝试了不同的学习率(alpha),尝试了不同的迭代次数,但我的拟合数据看起来像这样 enter image description here

但它应该是enter link description here

我错过了什么?是否有任何逻辑错误或类似的错误?谢谢你的交易。

1 个答案:

答案 0 :(得分:0)

您的算法总体看起来是正确的,numpy实施似乎存在一个小问题,当您计算(h - y)*a时,您做了

    q[j][0] = q[j][0] - alpha * np.sum((h - y) * a[:,j])

但是因为您使用numpy.ndarray类型而不是numpy.matrix类型,您应该已经完成​​了a[:, j].dot(h - y)

    q[j][0] = q[j][0] - alpha * np.sum(a[:,j].dot(h - y))

这是我在完成拟合后从你的情节中得到的东西

enter image description here