Python中statsmodels逻辑回归predict_proba的等价实现方法?
在statsmodels中实现sklearn predict_proba的等价功能
statsmodels的LogitResults对象确实没有predict_proba方法,但你可以通过现有方法轻松实现相同功能:
- 正类(y=1)的概率:直接调用
model.predict(X_test),这个方法默认返回的就是样本属于正类的概率,对应sklearn中predict_proba(X_test)[:,1]的结果。 - 负类(y=0)的概率:用
1 - 正类概率计算得到,对应sklearn中predict_proba(X_test)[:,0]的结果。
具体代码示例
# 获取正类概率(对应sklearn的predict_proba[:,1]) y_proba_1 = model.predict(X_test) # 计算负类概率(对应sklearn的predict_proba[:,0]) y_proba_0 = 1 - y_proba_1
如果需要和sklearn的predict_proba输出格式完全一致(每行包含[0类概率, 1类概率]的二维数组),可以用numpy拼接:
import numpy as np # 生成和sklearn格式相同的概率数组 y_proba = np.column_stack((y_proba_0, y_proba_1))
补充说明
statsmodels的Logit模型predict方法本质是对模型的线性预测结果(对数几率)应用sigmoid函数,直接输出P(y=1|X),这正是你需要的正类概率,不需要额外调用其他方法。
内容的提问来源于stack exchange,提问作者dingaro
相关产品推荐
相关产品推荐

