首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解sklearn

理解sklearn
EN

Stack Overflow用户
提问于 2021-12-03 08:50:09
回答 1查看 802关注 0票数 6

嗨,我很难理解如何使用sklearn.calibration.CalibratedClassifierCV的输出。

利用该方法对二值分类器进行了标定,取得了很好的效果。然而,我不知道如何解释结果。滑雪板指南说,在校准之后,

predict_proba方法的输出可以直接解释为置信度。例如,一个经过良好校准的(二进制)分类器应该对样本进行分类,在它给出的predict_proba值接近0.8的样本中,大约80%实际上属于正类。

现在,我想通过在.6应用一个截止点来减少假阳性,该模型用于预测标签True。如果没有校准,我只会使用my_model.predict_proba() > .6。然而,似乎在校准后,predict_proba的含义发生了变化,所以我不确定我是否还能做到这一点。

从一个快速的测试,它似乎预测和predict_proba遵循相同的逻辑,我希望在校准之前。产出:

代码语言:javascript
复制
pred = my_model.predict(valid_x)
proba= my_model.predict_proba(valid_x)
pd.DataFrame({"label": pred, "proba": proba[:,1]})

如下:

其中,所有高于.5的概率都被归类为True,而.5以下的所有内容都被归类为False。

你能确认,在校准之后,我仍然可以使用predict_proba应用不同的截止点来识别我的标签吗?

2 https://scikit-learn.org/stable/modules/calibration.html#calibration

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-03 13:03:22

对我来说,你可以在校准后使用predict_proba()来应用不同的截止点。

在类CalibratedClassifierCV中发生的事情(正如您注意到的)实际上是基于predict_proba()的输出(参见这里中的引用),即np.argmax(self.predict_proba(X), axis=1) == self.predict(X)

另一方面,对于您要传递给CalibratedClassifierCV的未经校准的分类器(取决于它是否是概率分类器),上述等式可能成立也可能不成立(例如,对于SVC()分类器不适用--例如,有关此问题的其他细节,请参见这里 )。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70211643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档