Почему я получаю ValueError: не удалось передать входной массив из формы (15163,19) в форму (15163,0)? - PullRequest
0 голосов
/ 15 февраля 2020

Это похоже на частый вопрос здесь, на SO, но, тем не менее, ответы на другие вопросы мне не помогли. Поэтому я пытаюсь объяснить, что происходит. Я хочу регрессировать на следующий Pandas фрейм данных

# Data
y = df[['variation']]
x = df.drop(['variation','value_next','id'], axis=1)

Сейчас y равен

Name: variation, dtype: float64
<class 'pandas.core.frame.DataFrame'>
Int64Index: 17690 entries, 0 to 17693
Data columns (total 1 columns):
 #   Column     Non-Null Count  Dtype  
---  ------     --------------  -----  
 0   variation  17690 non-null  float64
dtypes: float64(1)
memory usage: 276.4 KB

, а x имеет 19 столбцов, каждый из которых содержит 17690 записей.

Затем я пытаюсь сделать регрессию:

# Uses pipeline to create a polynomial regression equation
def PolynomialRegression(degree=2, **kwargs):
    return make_pipeline(PolynomialFeatures(degree), LinearRegression(**kwargs))

# Uses grid search to find the best polynomial
param_grid = {'polynomialfeatures__degree': np.arange(21),
              'linearregression__fit_intercept': [True, False],
              'linearregression__normalize': [True, False]}

grid = GridSearchCV(PolynomialRegression(), param_grid, cv=7)
grid.fit(x,y)

И при вызове grid.fit я получаю эту ошибку. Я также пытался преобразовать x и y в данные np, но без удачи.

1 Ответ

0 голосов
/ 16 февраля 2020

Следующий фрагмент кода должен устранить вашу ошибку:

param_grid = {
               'polynomialfeatures__degree': np.arange(1,21)
              ,'linearregression__fit_intercept': [True, False]
              ,'linearregression__normalize': [True, False]
             }

, хотя я должен признать, 21 - это огромное завышение.

...