Classifier.fit(X,y) error



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

我正在使用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)

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

此外,代码的最后一行

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

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

相关内容

  • 没有找到相关文章

最新更新