获取“ValueError:预期为二维数组,却得到一维数组:数组=[-0.27861589]。”在Python中预测SVR回归

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

我无法解决代码中显示的数组维度问题。当我试图找出 y_predict 时,出现了 valueerror 问题。这是代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

#importing dataset
dataset = pd.read_csv('Position_Salaries.csv')
X = dataset.iloc[:,1:2].values
y = dataset.iloc[:,2].values
y=np.reshape(y,(10,1))

#Spliting dataset into training set and test set
'''from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state = 0)'''

#Feature scaling
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
sc_y = StandardScaler()
X = sc_X.fit_transform(X)
y = sc_y.fit_transform(y)

######## SVR regression
from sklearn.svm import SVR
svr_regressor = SVR(kernel='rbf')   #rbf = gaussian kernel
svr_regressor.fit(X, y)

#Prediction of given value using SVR regression
X = np.reshape(X,(-1, 1))
y_predict = sc_y.inverse_transform(svr_regressor.predict(sc_X.transform([[6.5]])))

########### Visulization of svr model
plt.scatter(X, y, color = 'blue')
plt.plot(X, svr_regressor.predict(X), color = 'red')
plt.show()


我收到错误: ValueError:需要 2D 数组,却得到 1D 数组: 数组=[-0.27861589]。 如果数据具有单个特征,则使用 array.reshape(-1, 1) 重塑数据;如果数据包含单个样本,则使用 array.reshape(1, -1) 重塑数据。

python valueerror
1个回答
0
投票

有点晚了,但我在这里以防万一将来有人需要它,所以 问题出在接近结尾处的

inverse_transform
函数

y_predict = sc_y.inverse_transform(svr_regressor.predict(sc_X.transform([[6.5]])))

此函数仅采用 2D 类似数组的数据,即形状 (n_samples,n_features) 作为参数,但您传递的参数是

predict
对象中
SVR
函数的结果,根据 官方文档这将返回一个形状数组(n_samples,),意思是,一个一维数组,这就是引发valueError的原因

为了解决这个问题,您必须将

predict
函数的结果整形为二维数组,它看起来像这样:

    reg = regressor.predict(sc_X.transform(np.array([[6.5]])))
    reg = np.reshape(reg,(-1,1))
    sc_Y.inverse_transform(reg)
© www.soinside.com 2019 - 2024. All rights reserved.