如何解读员工离职预测场景下predict_proba的输出结果?
关于
predict_proba输出含义的解答 你的理解不具备普适正确性,不能直接默认第二列就是离职概率,判断依据如下:
- 主流机器学习框架(以scikit-learn为代表)的分类模型,
predict_proba返回的二维数组中,每一列对应的概率类别,完全和模型内置的classes_属性存储的类别顺序绑定,不会自动按业务含义排序。 - 只有当你做标签预处理时,明确将「离职」编码为排在第二位的类别(比如二分类标签编码后
0=不离职,1=离职,且model.classes_输出为array([0, 1])),你对第一行[0.17, 0.83]的解读才成立,即对应该员工有83%概率离职。 - 如果你当初的标签编码把「离职」放在了第一位,或是使用字符串类别标签时框架按字典序自动排列类别顺序,列的对应关系就会反转,此时0.83反而代表员工留任的概率。
验证方法
你只需要在训练完成的模型上执行一行代码,就能明确列和类别的对应关系:
print(model.classes_)
输出的数组中,第0位的元素对应每一行第0列概率的所属类别,第1位的元素对应每一行第1列概率的所属类别,直接对照就能得到准确的概率含义。
你贴出的模型输出片段如下:
Output exceeds the size limit. Open the full output data in a text editor array([[0.17, 0.83], [0.43, 0.57], [0.29, 0.71], [0.94, 0.06], [0.98, 0.02], [0.84, 0.16], [0.64, 0.36], [1. , 0. ], [0.85, 0.15], [0.99, 0.01], [0.09, 0.91], [0.89, 0.11], [0.21, 0.79], [0.15, 0.85], [0.78, 0.22], [0.18, 0.82], [0.84, 0.16], [0.45, 0.55], [0.96, 0.04], [0.95, 0.05], [0.91, 0.09], [0.9 , 0.1 ], [1. , 0. ], [0.91, 0.09], [0.74, 0.26], ... [0.94, 0.06], [0.99, 0.01], [0.22, 0.78], [0.89, 0.11], [0.98, 0.02]])
内容的提问来源于stack exchange,提问作者pyharry
相关产品推荐
相关产品推荐

