我正在尝试一些机器学习算法。
我正在使用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]]))
),一切都像预期的那样工作。