Я не могу решить ошибку «ValueError: Ожидаемый 2D-массив, вместо него получен 1D-массив:» в SVR | ML - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь сделать простой svr, и код требует некоторого масштабирования, поэтому, когда я применяю масштабирование к набору данных с этим кодом, это всегда выдает эту ошибку !!Я пытался изменить данные в функции fit_transform(), а также в разделе разделения набора данных, но это всегда изменяет значения y на абсолютный ноль !!thou значения должны находиться в диапазоне от -0.720 до 2.643 (всего 10 значений) ..

ps: ошибка возникает, когда я подгоняю и преобразовываю 'y'.

Я виделразные вопросы и применяемые методы, но idk, который не работает для меня, поэтому, пожалуйста, помогите, потому что я застрял в этом плохо ...

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

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]])

#visualising the svr results
plt.scatter(X,y ,color = 'red')
plt.plot(X , regressor.predict(X) , color = 'blue')
plt.title('truth or bluff')
plt.xlabel('positon level')
plt.ylabel('salary')
plt.show()

между -0.720 и 2.643 (всего 10 значений)

1 Ответ

0 голосов
/ 08 июля 2019

В вашем коде y - это Series или list, которое не принимается StandardScaler.Чтобы преобразовать y в пустой массив, запустите:

import numpy as np
y = np.reshape(y, (-1,1))
y = sc_y.fit_transform(y)
...