【发布时间】:2021-06-15 03:53:25
【问题描述】:
我正在尝试了解 Python statsmodels 中用于 Logit 模型的 predict 函数。它的文档是here。
当我构建一个 Logit 模型并使用 predict 时,它返回的值从 0 到 1,而不是 0 或 1。现在我读到这篇文章说这些是概率,我们需要一个阈值。 Python statsmodel.api logistic regression (Logit)
现在,我想生成 AUC 数字,我使用来自 sklearn (docs) 的 roc_auc_score。
这是我开始感到困惑的时候。
- 当我将来自我的 Logit 模型的原始预测值(概率)作为第二个参数
y_score放入roc_auc_score时,我得到了一个合理的 AUC 值,约为 80%。roc_auc_score函数如何知道我的哪些概率等于 1,哪些等于 0?我没有机会设定门槛。 - 当我使用 0.5 的阈值手动将概率转换为 0 或 1 时,我得到的 AUC 约为 50%。为什么会发生这种情况?
这里有一些代码:
m1_result = m1.fit(disp = False)
roc_auc_score(y, m1_result.predict(X1))
AUC: 0.80
roc_auc_score(y, [1 if X >=0.5 else 0 for X in m1_result.predict(X1)])
AUC: 0.50
为什么会这样?
【问题讨论】:
标签: python-3.x scikit-learn logistic-regression statsmodels auc