model
в строке model = sm.OLS(y_train,X_train[:,[0,1,2,3,4,6]])
при обучении таким образом предполагает, что входные данные являются 6-мерными, поскольку 5-й столбец X_train
отбрасывается.Это требует, чтобы данные испытаний (в данном случае X_test
) также были 6-мерными.Вот почему y_pred = result.predict(X_test)
не работал, потому что X_test
изначально был 7-мерным.Правильное исправление здесь:
y_pred = result.predict(X_test[:, [0,1,2,3,4,6]]
БОНУС
Я вижу, вы используете библиотеку Pandas.Для удаления столбцов лучше использовать .drop
, поэтому вместо
newdf.loc[:, newdf.columns != 'V-9'].values
вы можете использовать
newdf.drop('V-9', axis=1) # axis=1 makes sure cols are dropped, not rows
аналогично вместоиз
X_train[:,[0,1,2,3,4,6]]
вы можете использовать
X_train.drop(X_train.columns[5], axis=1) # this like dropping the 5th column of the dataFrame
Это делает его более читабельным и более легким для кодирования, особенно если у вас было 50 измерений вместоиз 7.
Я рад, что это помогает!