Возникли проблемы с размерностью с помощью scikit-learn LinearRegression.predict () - PullRequest
0 голосов
/ 20 сентября 2019

Я тренирую полиномиальные регрессии по ряду измерений и пытаюсь использовать функцию предиката () для списка входных данных.

inputs = np.linspace(0,10,100).reshape(-1,1)

for i, deg in enumerate([1, 3, 6, 9]):
        poly = PolynomialFeatures(degree=deg)
        X_poly = poly.fit_transform(X_train.reshape(-1,1))
        linreg = LinearRegression().fit(X_poly, y_train)
        print(linreg.predict(inputs))

Когда я вызываю предикат (), я получаю следующую трассировку:

ValueError                                Traceback (most recent call last)
<ipython-input-5-4100ae3f3ba3> in <module>()
     13     return
     14 
---> 15 answer_one()

<ipython-input-5-4100ae3f3ba3> in answer_one()
      9         X_poly = PolynomialFeatures(degree=deg).fit_transform(X_train.reshape(-1,1))
     10         linreg = LinearRegression().fit(X_poly, y_train)
---> 11         print(linreg.predict(inputs))
     12         # print(linreg.score(X_poly, y_train))
     13     return

/opt/conda/lib/python3.6/site-packages/sklearn/linear_model/base.py in predict(self, X)
    266             Returns predicted values.
    267         """
--> 268         return self._decision_function(X)
    269 
    270     _preprocess_data = staticmethod(_preprocess_data)

/opt/conda/lib/python3.6/site-packages/sklearn/linear_model/base.py in _decision_function(self, X)
    251         X = check_array(X, accept_sparse=['csr', 'csc', 'coo'])
    252         return safe_sparse_dot(X, self.coef_.T,
--> 253                                dense_output=True) + self.intercept_
    254 
    255     def predict(self, X):

/opt/conda/lib/python3.6/site-packages/sklearn/utils/extmath.py in safe_sparse_dot(a, b, dense_output)
    187         return ret
    188     else:
--> 189         return fast_dot(a, b)
    190 
    191 

ValueError: shapes (100,1) and (2,) not aligned: 1 (dim 1) != 2 (dim 0)

Форма (100,1) явно для массива входных данных, но я неуверен, что форма объекта (2,).

1 Ответ

0 голосов
/ 20 сентября 2019

Когда вы тренируете классификатор с поли:

X_poly = poly.fit_transform(X_train.reshape(-1,1))

, вам нужно убедиться, что прогноз также использует значения поли: print(linreg.predict(inputs)) в этом случае входные данные также должны быть полисами:

inputs = poly.transform(inputs)
print(linreg.predict(inputs))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...