【问题标题】:Value Error using Patsy for a Logistic Regression Model将 Patsy 用于 Logistic 回归模型的值错误
【发布时间】:2020-11-25 11:08:46
【问题描述】:

为了我的问题,我制作了一个非常简单的逻辑模型。下面是代码;

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: shape (5,2) and (5,2) not aligned: 2 (dim 1) != 5 (dim 0) about line 18.

我真的不明白这些是如何不对齐的,因为我只是使用 predict() 将训练数据 X 传递回模型。我的感觉是我缺少关于 patsy.dmatrices 的一些东西。

有人有想法吗?

【问题讨论】:

  • 我无法重现您的错误。我在 statsmodels 0.12.0
  • 我正在运行 statsmodels 0.12.1
  • 刚刚意识到我是个白痴,应该是 ypred = result.predict(X)

标签: python logistic-regression predict patsy


【解决方案1】:

您将拟合对象分配给result,因此您应该使用它来预测:

result.predict(X)

要获得拟合值,您还可以这样做:

result.fittedvalues

【讨论】:

    最近更新 更多