y_pred = recressor.predict(sc_x.transform(6.5))不起作用



每当我要预测时,我都会看到一个错误。我被代码中的线y_pred = regressor.predict(6.5)所困。

我遇到了错误:

valueerror:预期的2D数组,取而代之的标量数组: 数组= 6.5。 使用array.reshape(-1,1(重塑您的数据,如果您的数据具有单个功能或array.Reshape(1,-1(,如果它包含一个示例。

spyder

# SVR
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('Position_Salaries.csv')
X = dataset.iloc[:, 1:2].values
y = dataset.iloc[:, 2].values

# 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)
# Fitting SVR to the dataset
from sklearn.svm import SVR
regressor = SVR(kernel = 'rbf')
regressor.fit(X, y)
# Predicting a new result
y_pred = regressor.predict(6.5)

错误:y_pred = regressor.predict(sc_x.transform(6.5((

Traceback (most recent call last):
  File "<ipython-input-11-64bf1bca4870>", line 1, in <module>
    y_pred = regressor.predict(sc_X.transform(6.5))
  File "C:UsersachieverAnaconda3libsite-packagessklearnpreprocessingdata.py", line 758, in transform
    force_all_finite='allow-nan')
  File "C:UsersachieverAnaconda3libsite-packagessklearnutilsvalidation.py", line 514, in check_array
    "if it contains a single sample.".format(array))
ValueError: Expected 2D array, got scalar array instead: array=6.5. Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

,很明显,因为recressor.predit((期望一个值列表/数组进行预测,并且您将其传递给单个浮点,它将无法使用:

# Predicting a new result
y_pred = regressor.predict(6.5)

至少:

# Predicting a new result
y_pred = regressor.predict(np.array([6.5]))

,但大概您还有更多想要传递给它的东西,所以更像是:

# Predicting a new result
y_pred = regressor.predict(some_data_array)

编辑:

您需要安排您传递给预测变量的2D数组的形状,因此看起来像这样:

data = [[[1,0,0,1],[0,1,12,5],....]

其中[1,0,0,1]是您想要预测的一个数据点的一组参数。[0,1,12,5(另一个数据点。

无论如何,它们都应该具有相同的功能#(例如4在我的示例中(,并且它们的功能数量应与您用于训练预测变量的数据相同。

y_pred = sc_Y.inverse_transform(regressor.predict(sc_X.transform(np.array([[6.5]]))))

使用rephape函数:

sc_y.inverse_transform(regressor.predict(sc_X.transform([[6.5]])).reshape(1,-1))

最新更新