我正在按照本教程进行此 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)
问题是,clf.predict()即使你预测的是单个点,也需要一个 2D 数组。你需要重塑输入以进行预测。
clf.predict()
您可以修改代码来重塑您的预测输入,如下所示:
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]])是
`np.array([[0.58, 0.76]])