问题与“ ValueError:预期的2D数组,取而代之的是1D数组”

时间:2019-11-22 23:03:52

标签: python arrays numpy scikit-learn regression

我需要运行SVR(支持的向量回归)。我有一个CSV数据框,使用一个目标变量和多个回归变量可以运行OLS回归没有问题。但是我对这部分代码有疑问。

所以,这是我的代码:


import matplotlib.pyplot as plt
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVR

sc_X = StandardScaler()
sc_y = StandardScaler()
X = sc_X.fit_transform(X)
y = sc_y.fit_transform(y)

y_pred = sc_y.inverse_transform ((regressor.predict (sc_X.transform(np.array([[6.5]])))))
plt.scatter(X, y, color = 'magenta')
plt.plot(X, regressor.predict(X))
plt.title('SVR')
plt.xlabel('X')
plt.ylabel('VF')
plt.show()

X_grid = np.arange(min(X), max(X), 0.1)
X_grid = X_grid.reshape((len(X_grid), 1))
plt.scatter(X, y)
plt.plot(X_grid, regressor.predict(X_grid))
plt.title('SVR')
plt.xlabel('X')
plt.ylabel('VF')
plt.show()

我收到以下错误消息:“ ValueError:预期的2D数组,取而代之的是1D数组 如果数据具有单个功能,则使用array.reshape(-1,1)调整数据的形状;如果数据包含单个样本,则使用array.reshape(1,-1)调整数据的形状。“

这是我第一次遇到此问题。我在其他主题中看到的内容并不稀缺,但实际上我不知道在代码中重塑数据的位置。当我尝试这样做时,它说DataFrame没有重塑功能。

这是我的数据集的图片。目标是VF,所有其他变量都是回归变量。 my dataset

谢谢

1 个答案:

答案 0 :(得分:1)

看来,当您这样做时:

 X = sc_X.fit_transform(X)

X包含多个变量。 8个具体

接下来,您要做的事:

 regressor.predict(sc_X.transform(np.array([[6.5]])))

现在,您尝试转换仅具有一个变量的新样本,但是sc模型已针对具有多个变量的数据进行了训练。