SVR ValueError: не транслируемый выходной операнд с формой (1,1) не соответствует форме трансляции (1,9) - PullRequest
0 голосов
/ 21 апреля 2020

Я использую SVR для прогнозирования баллов NBA. Мои переменные indep добавляют к моей переменной dep.

import numpy as np
import pandas as pd

X - это массив из 58 строк по 9 столбцов. Сумма из 9 столбцов = 10-й столбец (Y)

DK = pd.read_csv('NV.csv')
X = DK.iloc[:, :-1].values.astype(float)
Y = DK.iloc[:,9].values.astype(float).reshape(-1,1)


#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 data and creating regressors

from sklearn.svm import SVR
regressor1 = SVR(kernel='rbf')
regressor1.fit(X,Y)

Когда я запускаю вышеупомянутое, я получаю предупреждение с данными и следующий вывод

DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the         shape of y to (n_samples, ), for example using ravel().
y = column_or_1d(y, warn=True)

SVR(C=1.0, cache_size=200, coef0=0.0, degree=3, epsilon=0.1, gamma='auto',
kernel='rbf', max_iter=-1, shrinking=True, tol=0.001, verbose=False)

Прогнозирование новый результат - мой код сталкивается с дорожным блоком

y_pred = sc_y.inverse_transform((regressor1.predict(sc_X.transform(np.array([[6.5]])))))

. Это возвращает ошибку ниже. Проблема в том, как я подгоняю / масштабирую данные или что-то совсем другое?

ValueError                                Traceback (most recent call last)
<ipython-input-63-9c7f8b557a70> in <module>
----> 1 y_pred = sc_y.inverse_transform((regressor1.predict(sc_X.transform(np.array([[1.9]])))))

~\Anaconda\lib\site-packages\sklearn\preprocessing\data.py in transform(self, X, copy)
767         else:
768             if self.with_mean:
--> 769                 X -= self.mean_
770             if self.with_std:
771                 X /= self.scale_

ValueError: non-broadcastable output operand with shape (1,1) doesn't match the broadcast shape (1,9)

1 Ответ

0 голосов
/ 21 апреля 2020

Сначала разберитесь с самой ошибкой:

X -= self.mean_

Я могу воспроизвести ошибку с помощью:

In [234]: X = np.array([[1.23]])                                                                       
In [235]: X.shape                                                                                      
Out[235]: (1, 1)
In [236]: X -= np.array([[1,2,3]])                                                                     
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-236-6854fd7cd554> in <module>
----> 1 X -= np.array([[1,2,3]])

ValueError: non-broadcastable output operand with shape (1,1) doesn't match the broadcast shape (1,3)

Я собирался написать, что восстановление резервной копии в вашем собственном коде может возьми работу. Но я вижу ваш собственный код:

sc_X.transform(np.array([[6.5]]))

np.array([[6.5]]), скорее всего, массив (1,1), X.

...