Python脚本错误:“Expected 2D array, got 1D array instead:”?

117

我正在遵循这个教程来进行机器学习预测:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style

style.use("ggplot")
from sklearn import svm

x = [1, 5, 1.5, 8, 1, 9]
y = [2, 8, 1.8, 8, 0.6, 11]

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

X = np.array([[1,2],
             [5,8],
             [1.5,1.8],
             [8,8],
             [1,0.6],
             [9,11]])

y = [0,1,0,1,0,1]
X.reshape(1, -1)

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

print(clf.predict([0.58,0.76]))

我正在使用Python 3.6,但却遇到了“预期是二维数组,而实际传入的是一维数组”错误。我认为这个脚本是为旧版本编写的,但我不知道该如何将其转换为3.6版本。

已经尝试了:

X.reshape(1, -1)

3
哪一行代码出现了错误? - stackoverflowuser2010
13
X = X.reshape(1, -1) 的翻译: X = X.reshape(1, -1)reshape 操作不是原地修改。 - Mad Physicist
2
@stackoverflowuser2010:我猜测最后一行是 clf.predict(<a-1d-thing>),因为 X 已经是二维的了(虽然 reshape 是无用的)。 - Mark Dickinson
@JonTargaryen:您使用的是scikit-learn的哪个版本?这应该不会变成一个错误,直到0.19版本,而这个版本还没有发布。 - Mark Dickinson
2
@JonTargaryen 重塑(reshape)的位置对了,但你丢弃了结果。请把结果赋回给 X - Mad Physicist
显示剩余4条评论
11个回答

-1
将自变量和因变量的X和Y矩阵从int64类型转换为DataFrame,以便将其从1D数组转换为2D数组。 即X=pd.DataFrame(X)和Y=pd.dataFrame(Y),其中pd是Python中pandas类。因此,特征缩放也不会导致任何错误!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接