Logistic回归概率类别对应及营销倾向得分应用咨询
如何确定Logistic回归中类别1的概率并筛选高倾向客户
别担心,这个困惑在分类模型实践中太常见了!我来帮你理清这个问题,一步步解决:
一、确定概率数组与类别0/1的对应关系
你看到的概率数组是模型对每个样本属于各个类别的预测概率,顺序完全由模型训练时的类别标签顺序决定。这里有两种最可靠的方法来确认:
1. 直接查看模型的类别属性(最准确)
如果你用的是scikit-learn这类主流框架训练的Logistic回归模型,训练完成后可以直接调用模型的classes_属性,它会返回模型识别的类别顺序,这个顺序和predict_proba输出的概率数组顺序一一对应。
比如执行:
print(model.classes_)
如果输出是array([0, 1]),那概率数组的第一个元素是类别0的概率,第二个是类别1的概率;如果输出是array([1, 0]),顺序就反过来。
2. 用已知类别的样本验证(快速排查)
找一个你明确知道实际类别是1的样本,把它输入模型得到概率数组,数值更大的那个位置就对应类别1的概率。比如你示例里第二行actual=1且prediction=1,如果模型预测正确,那对应类别1的概率应该是数组里更大的那个值——这里你的示例写的是[76, 34],看起来有点矛盾,可能是输入时的笔误?但用这种验证方法能快速帮你确认对应关系。
二、筛选高倾向客户的步骤
确定类别1的概率位置后,就可以按以下步骤筛选高倾向客户:
- 提取类别1的概率值:从每个样本的概率数组中取出对应类别1的那个值;
- 按概率降序排序:把所有样本按照类别1的概率从高到低排序,概率越高的客户,属于类别1的倾向越强;
- 截取高概率样本:根据你的业务需求(比如取前10%、前N个)筛选出高倾向客户。
代码示例(scikit-learn场景)
# 假设model是训练好的Logistic回归模型,X是待预测的客户特征数据 # 1. 确认类别顺序 print("模型的类别顺序:", model.classes_) # 2. 获取所有样本的概率数组 all_probs = model.predict_proba(X) # 3. 找到类别1对应的索引位置 class_1_idx = list(model.classes_).index(1) # 4. 提取每个样本的类别1概率 class_1_probs = all_probs[:, class_1_idx] # 5. 把概率和客户数据结合并排序(假设客户数据存在DataFrame里) import pandas as pd # 假设你的客户数据df包含所有客户信息 df['propensity_score'] = class_1_probs # 按倾向得分降序排序 sorted_customers = df.sort_values(by='propensity_score', ascending=False) # 6. 筛选前1000个高倾向客户 high_propensity_customers = sorted_customers.head(1000)
注意事项
- 如果你用的是其他框架(比如TensorFlow/PyTorch),核心逻辑一样:找到模型定义时的类别标签映射顺序,就能对应到概率数组的位置;
- 自定义模型的话,要检查输出概率时的顺序是否和你标注的类别标签顺序一致,避免搞反。
内容的提问来源于stack exchange,提问作者Saket Guntoorkar
相关产品推荐
相关产品推荐

