#python #logistic-regression #predict #patsy
#python #логистическая регрессия #прогнозировать #простофиля
Вопрос:
Я создал чрезвычайно простую логистическую модель для целей моего вопроса. Вот код ниже;
import patsy
import pandas as pd
import statsmodels.api as sm
df = pd.DataFrame()
for i in range(5):
df.at[i, 'response'] = 1
if i == 3:
df.at[i,'response'] = 0
df['x'] = range(5)
y, X = patsy.dmatrices('response ~ x', df,return_type = 'dataframe')
logit_model=sm.Logit(y,X)
result=logit_model.fit()
ypred = logit_model.predict(X)
print(ypred)
Пожалуйста, извините за мой дерьмовый код, я пишу это в спешке — нужно идти на работу, ха-ха. Этот код выдает ошибку значения — ValueError: фигуры (5,2) и (5,2) не выровнены: 2 (dim 1) != 5 (dim 0) около строки 18.
Я искренне не понимаю, как они не выровнены, поскольку я просто передаю данные поезда X обратно в модель, используя predict() . У меня такое чувство, что я что-то упускаю в patsy.dmatrices.
У кого-нибудь есть идея?
Комментарии:
1. Я не могу воспроизвести вашу ошибку. я использую statsmodels 0.12.0
2. Я использую statsmodels 0.12.1
3. просто понял, что я идиот, и это должно быть ypred = result.predict(X)
Ответ №1:
Вы назначили подогнанный объект result
, поэтому вы должны использовать это для прогнозирования:
result.predict(X)
Чтобы получить установленные значения, вы также можете сделать:
result.fittedvalues