Python:KNN回归拟合返回错误

问题描述 投票:0回答:1

我正在进行机器学习练习,并且在运行以下代码时不断出现错误:

from sklearn.neighbors import KNeighborsRegressor
import numpy as np
import matplotlib.pyplot as plt

N=51
SD=1.15
ME=0
E=np.random.normal(ME, SD, N)
X = np.linspace(-4,4, N, endpoint=True)
Y = X**2 + E

neigh = KNeighborsRegressor(n_neighbors=2)
neigh.fit(X, Y)

X_eval = np.linspace(0,4,1000)
X_eval = X_eval.reshape(-1,1)

plt.figure()
plt.plot(X_eval,neigh.predict(X_eval), label="regression predictor")
plt.plot(X,Y, 'rs', markersize=12, label="training set")
plt.show()

错误在neigh.fit()行上,并且是:

ValueError:预期的2D数组,取而代之的是1D数组:array = [所有生成的x值]。如果数据具有单个功能,则使用array.reshape(-1,1)重整数据;如果包含单个样本,则使用array.reshape(1,-1)重整数据。

但是以这种方式安装它也不起作用。我是机器学习和python编程的新手,所以我很抱歉,如果这个问题很琐碎,但是:我可以做些什么来使我的代码运行?预先感谢!

python machine-learning curve-fitting knn
1个回答
0
投票

解决此问题的关键部分是理解错误。该错误告诉您需要传递一个2D数组,但是您仅传递一个1D数组。更明确地说,您的问题出在X上,确实需要像这样重塑:

X_new = X.reshape(-1,1)

reshape(-1,1)将采用一维数组,并确保每个子数组中只有1个元素。 -1告诉numpy推断要制作的子数组的数量;在这种情况下,我们得到51。

下面的代码在我的终端上运行:

numpy
© www.soinside.com 2019 - 2024. All rights reserved.