小能豆

Python 脚本中出现错误“预期为 2D 数组,但得到的却是 1D 数组:”?

javascript

我正在按照本教程进行此 ML 预测:

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,但出现错误“预期为 2D 数组,但得到的却是 1D 数组:”我认为该脚本适用于旧版本,但我不知道如何将其转换为 3.6 版本。

已经尝试过:

X.reshape(1, -1)

阅读 25

收藏
2024-10-12

共1个答案

小能豆

问题是,clf.predict()即使你预测的是单个点,也需要一个 2D 数组。你需要重塑输入以进行预测。

您可以修改代码来重塑您的预测输入,如下所示:

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

style.use("ggplot")

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]

clf = svm.SVC(kernel=

clf = svm.SVC(kernel


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


clf.fit(X, y

clf.fit(X,

clf.fit

clf
# Reshape the input for prediction to 2D array

prin
print(clf.predict(np.array([[0.58, 0.76]])))

clf.predict()方法,`np.array([[0.58, 0.76]])

2024-10-12