出现了一个错误,提示预期为二维数组,但得到的是一维数组。错误的详细信息如下,输出后还附有完整的代码,
输出:
Traceback (most recent call last): File "<ipython-input-16-d2ec9bb14152>", line 5, in <module> y = sc_y.fit_transform(y).reshape(1,-1) File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\base.py", line 553, in fit_transform return self.fit(X, **fit_params).transform(X) File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\preprocessing\data.py", line 639, in fit return self.partial_fit(X, y) File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\preprocessing\data.py", line 663, in partial_fit force_all_finite='allow-nan') File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\utils\validation.py", line 521, in check_array "if it contains a single sample.".format(array))ValueError: Expected 2D array, got 1D array instead:array=[ 45000. 50000. 60000. 80000. 110000. 150000. 200000. 300000. 500000. 1000000.].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*```The complete code is as follows:**Code:**```# SVR Template# Data Preprocessing# Importing the librariesimport numpy as npimport matplotlib.pyplot as pltimport pandas as pd# Importing the datasetdataset = pd.read_csv('Position_Salaries.csv')X = dataset.iloc[:, 1:2].values # 1:2 is to consider X as a matrixy = dataset.iloc[:, 2].values# Feature Scalingfrom sklearn.preprocessing import StandardScalersc_X = StandardScaler()sc_y = StandardScaler()X = sc_X.fit_transform(X)y = sc_y.fit_transform(y)# Fitting the SVR Model to the datasetfrom sklearn.svm import SVRregressor = SVR(kernel = 'rbf')regressor.fit(X,y)# Predicting a new result y_pred = regressor.predict([[6.5]]) # Visualising the SVR Resultsplt.scatter(X,y, color = 'red')plt.plot(X, regressor.predict(X), color = 'blue')plt.title('Truth or Bluff (SVR Model)')plt.xlabel(' Position Level ')plt.ylabel('Salary')plt.show() ``` [1]: https://i.sstatic.net/ksQs2.png
回答:
这与一年前的stackoverflow问题有关。错误消息明确指出了您需要做的事情:y = sc_y.fit_transform(y.reshape(-1, 1))
然而,我认为您不需要对y值进行标准化处理以获得SVR的好性能(但x值需要)。参考stackexchange。