Фигуры Python не выровнены

#python #pandas #linear-regression

#python #pandas #линейная регрессия

Вопрос:

Я искал в Google справку по этой ошибке и пробовал использовать манекены, но пока ничего не помогло. Мой код:

 df_movies_train_reg = df_movies[df_movies['Release Year'] < 2014]
df_movies_test_reg = df_movies[df_movies['Release Year'] > 2013]

df_train = pd.DataFrame()
df_test = pd.DataFrame()

df_train['x'] = df_movies_train_reg['Theaters in First Week'].copy()
df_train['y'] = df_movies_train_reg['Worldwide Gross'].copy()

df_test['x'] = df_movies_test_reg['Theaters in First Week'].copy()
df_test['y'] = df_movies_test_reg['Worldwide Gross'].copy()

df_train['x^2'] = df_train['x'] * df_train['x']

X_reg = df_train[['x', 'x^2']]
y_reg = df_train[['y']]

reg = LinearRegression()

model = reg.fit(X_reg, y_reg)

score = model.score(df_test[['x']], df_test[['y']])
  

Набор данных представляет собой список из 2328 строк, обучающий набор, оставшийся после фильтрации по годам, составляет всего 2037 строк, тестовый набор — тогда 291 строка.

 ValueError                                Traceback (most recent call last)
<ipython-input-116-aee4ec5bd647> in <module>
     50 model = reg.fit(X_reg, y_reg)
     51 
---> 52 score = model.score(df_test[['x']], df_test[['y']])
     53 
     54 

~Anaconda3libsite-packagessklearnbase.py in score(self, X, y, sample_weight)
    326 
    327         from .metrics import r2_score
--> 328         return r2_score(y, self.predict(X), sample_weight=sample_weight,
    329                         multioutput='variance_weighted')
    330 

~Anaconda3libsite-packagessklearnlinear_modelbase.py in predict(self, X)
    211             Returns predicted values.
    212         """
--> 213         return self._decision_function(X)
    214 
    215     _preprocess_data = staticmethod(_preprocess_data)

~Anaconda3libsite-packagessklearnlinear_modelbase.py in _decision_function(self, X)
    196         X = check_array(X, accept_sparse=['csr', 'csc', 'coo'])
    197         return safe_sparse_dot(X, self.coef_.T,
--> 198                                dense_output=True)   self.intercept_
    199 
    200     def predict(self, X):

~Anaconda3libsite-packagessklearnutilsextmath.py in safe_sparse_dot(a, b, dense_output)
    171         return ret
    172     else:
--> 173         return np.dot(a, b)
    174 
    175 

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

Комментарии:

1. Проблема в том, что вы обучались на 2D-вводах и пытаетесь выполнить одномерный ввод?

2. Почему нет df_test['x^2'] ? Вы должны набирать очки в той же форме, что и тренировочные данные. например, что-то вроде model.score(df_test[['x', 'x^2]], df_test[['y']])

3. Да, @Криса и @Натан, спасибо вам! Это было исправлено путем добавления x^2 столбца и изменения его также в параметре score, как сказал Крис.