【问题标题】:how to predict using statsmodels.formula.api logit如何使用 statsmodels.formula.api logit 进行预测
【发布时间】:2021-12-16 00:11:01
【问题描述】:

我有以下问题。我想使用来自statsmodels.formula.apilogit 进行样本内预测。

查看我的代码:

import statsmodels.formula.api as smf

model_logit = smf.logit(formula="dep ~ var1 + var2 + var3", data=model_data)

到目前为止一切都很好。但我想使用我的模型进行样本内预测:

yhat5 = model5_logit.predict(params=["dep", "var1", "var2", "var3"])

这给出了一个错误ValueError: data type must provide an itemsize

当我尝试时:

yhat5 = model5_logit.predict(params="dep ~ var1 + var2 + var3")

我遇到另一个错误:numpy.core._exceptions._UFuncNoLoopError: ufunc 'multiply' did not contain a loop with signature matching types (dtype('<U32'), dtype('<U69')) -> None

如何使用 statsmodels.formula.api 对 Logit 模型进行样本内预测?

这对我没有帮助:How to predict new values using statsmodels.formula.api (python)

【问题讨论】:

  • 没有你的数据很难重现,但可能是你的数据包含不兼容的不同类型,(dtype('<U32'), dtype('<U69')),尝试转换变量的类型
  • 你的代码中的model_data是什么?为什么你使用 model5_logit 而不是 model_logit?如果它们是 var,请提供值。

标签: python logistic-regression statsmodels


【解决方案1】:

使用示例数据集:

import statsmodels.formula.api as smf
import pandas as pd
import numpy as np
from sklearn.datasets import make_classification

X,y = make_classification(n_features=3,n_informative=2,n_redundant=1)
model_data = pd.DataFrame(X,columns = ['var1','var2','var3'])
model_data['dep'] = y

拟合模型(我在您的代码中没有看到):

import statsmodels.formula.api as smf
model_logit = smf.logit(formula="dep ~ var1 + var2 + var3", data=model_data)
res = model_logit.fit()

您可以获得样本预测(概率)和预测标签:

in_sample = pd.DataFrame({'prob':res.predict()})
in_sample['pred_label'] = (in_sample['prob']>0.5).astype(int)

in_sample.head()
 
       prob  pred_label
0  0.005401           0
1  0.911056           1
2  0.990406           1
3  0.412332           0
4  0.983642           1

我们检查实际标签:

pd.crosstab(in_sample['pred_label'],model_data['dep'])
 
dep          0   1
pred_label        
0           46   2
1            4  48

【讨论】:

    猜你喜欢
    • 2016-12-21
    • 2021-05-05
    • 2019-01-21
    • 2011-09-14
    • 2020-10-30
    • 2015-06-06
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多