Classifier.fit(X,y)错误

时间:2016-08-27 18:55:30

标签: python scikit-learn

我正在尝试一些机器学习算法。

我使用sklearn工具进行逻辑回归脚本。

这是我的剧本:

import numpy as np
from matplotlib import pyplot as plt
from sklearn.linear_model import LogisticRegression
#from sklearn.neighbors import KNeighborsClassifier
X = np.array([[10000,80000,35],[7000,120000,57],[100,23000,22],[223,18000,26]])

y = np.array([1,1,0,0]).reshape((1, -1))
classifier = LogisticRegression()
classifier.fit(X,y)
print(classifier.predict([5500,80000,25]))

我得到的错误:

Traceback (most recent call last):
  File "logictic_regression2.py", line 11, in <module>
 classifier.fit(X,y)
  File "/usr/local/lib/python2.7/dist-packages/sklearn/linear_model
logistic.py", line 1142, in fit order="C")
 File "/usr/local/lib/python2.7/dist-packages/sklearn/utils
validation.py", line 515, in check_X_y
y = column_or_1d(y, warn=True)
File "/usr/local/lib/python2.7/dist-packages/sklearn/util
/validation.py", line 551, in column_or_1d
raise ValueError("bad input shape {0}".format(shape))
ValueError: bad input shape (1, 4)

1 个答案:

答案 0 :(得分:0)

LogisticRegression.fit()方法需要目标向量y的一维数组。如果删除将其转换为1x4矩阵(行向量)的.reshape((1, -1)),则您提到的错误应该消失。

此外,代码的最后一行

print(classifier.predict([5500,80000,25]))

发出警告(至少在sklearn版本0.17.1中),因为预计每次观察一行数据。如果你传递一个二维numpy数组(1x3矩阵)(np.array([[5500,80000,25]]))),一切都按预期工作。