我需要运行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,所有其他变量都是回归变量。
谢谢
答案 0 :(得分:1)
看来,当您这样做时:
X = sc_X.fit_transform(X)
X包含多个变量。 8个具体
接下来,您要做的事:
regressor.predict(sc_X.transform(np.array([[6.5]])))
现在,您尝试转换仅具有一个变量的新样本,但是sc
模型已针对具有多个变量的数据进行了训练。