ValueError:预期的二维数组,使用预测方法得到标量数组

数据挖掘 机器学习 回归 预言
2022-02-16 20:51:44

我正在尝试使用预测方法获取特定级别的预测值而不是整个特征。

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

#Importing Dataset
dataset = pd.read_csv('C:/Users/Rupali Singh/Desktop/ML A-Z/Machine Learning A-Z Template Folder/Part 2 - Regression/Section 7 - Support Vector Regression (SVR)/Position_Salaries.csv')
print(dataset)
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.reshape(-1,1))
#Fitting SVR model to dataset

from sklearn.svm import SVR

regressor = SVR(kernel='rbf')
regressor.fit(X,Y)

#Visualizing the dataset

plt.scatter(X, Y, color = 'red')
plt.plot(X, regressor.predict(X), color = 'blue')
plt.show()

# Predicting a new Result

Y_pred = regressor.predict(6.5)
print(Y_pred)

这是我的数据集,在这里我试图仅预测 6 级的值

Position  Level   Salary
0   Business Analyst      1    45000
1  Junior Consultant      2    50000
2  Senior Consultant      3    60000
3            Manager      4    80000
4    Country Manager      5   110000
5     Region Manager      6   150000
6            Partner      7   200000
7     Senior Partner      8   300000
8            C-level      9   500000
9                CEO     10  1000000

这是我收到的错误消息:

File "C:/Users/Rupali Singh/PycharmProjects/Machine_Learning/SVR.py", line 34, in <module>
    Y_pred = regressor.predict(6.5)
  File "C:\Users\Rupali Singh\PycharmProjects\Machine_Learning\venv\lib\site-packages\sklearn\svm\base.py", line 322, in predict
    X = self._validate_for_predict(X)
  File "C:\Users\Rupali Singh\PycharmProjects\Machine_Learning\venv\lib\site-packages\sklearn\svm\base.py", line 454, in _validate_for_predict
    accept_large_sparse=False)
  File "C:\Users\Rupali Singh\PycharmProjects\Machine_Learning\venv\lib\site-packages\sklearn\utils\validation.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.

我将非常感谢任何形式的帮助。

2个回答

尝试:

Y_pred = regressor.predict(np.array([6.5]).reshape(1, 1))

Scikit 不适用于标量(只有一个值)。它需要一个形状,其中是特征数,是观察数,在您的情况下都是 1。(m×n)mn

Y_pred = regressor.predict([[6.5]])