Python - 在0.17中弃用1d数组作为数据,并将在0.19中引发ValueError

时间:2017-10-24 18:22:06

标签: python machine-learning scikit-learn

我正在尝试使用python做一个小机器学习示例,我正在绘制几个坐标,然后预测位置如下:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style
style.use("ggplot")
from sklearn import svm

x = [1, 5, 2, 8, 3, 9]
y = [2, 8, 3, 8, 4, 11]

plt.scatter(x,y)
plt.show()

X = np.array([[1,2],[5,8],[2,3],[8,8],[3,4],[9,11]])
print(X)

y = [0,1,0,1,0,1]

clf = svm.SVC(kernel='linear', C = 1.0)
clf.fit(X,y)

print(clf.predict([10,10]))

当我运行它时会出现此错误:

C:\anaconda\python36\win64\431\lib\site-packages\sklearn\utils\validation.py:395: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and will raise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.
  DeprecationWarning)

我是机器学习的新手,很难从这里搬走。

1 个答案:

答案 0 :(得分:2)

您没有收到错误,这是一个警告。预警仍将在警告信息后立即打印。

解决方案也列在警告中:

  

如果您的数据有,则使用X.reshape(-1,1)重塑数据   单个特征或X.reshape(1,-1),如果它包含单个样本。

它摆脱了所承诺的警告:

>> print(clf.predict(np.array([10,10]).reshape(1,-1)))
[1]