scikit-learn中make_scorer函数的needs_proba和needs_threshold有什么区别?

3

make_scorer的文档中没有很好地解释它们之间的区别。我观察到,如果将needs_probaneeds_threshold设置为True,则评分函数将接收到pred_proba而不是y_pred。但是,不可能将它们都设置为True。这会导致错误。

ValueError: Set either needs_proba or needs_threshold to True, but not both
needs_threshold的文档指出:

例如,仅使用离散预测无法计算average_precision或roc曲线下面积。

我理解为如果评分是average_precision或roc_auc_score,则需要将needs_threshold设置为True。然而,无论needs_threshold是True还是False,它的工作方式都是相同的。
请问您能帮忙解释一下它们之间的区别以及如何使用needs_threshold吗?
1个回答

2
根据文档页面下方的注释,`needs_threshold` 在降级为`predict_proba`之前会尝试使用`decision_function`。对于像`roc_auc_score`和`average_precision`这样的排名排序指标,两者没有区别。
我猜你可能希望有一个度量标准,可以采用原始决策函数输出或(校准后的)概率输出的任一种。例如,在 SVC 中,决策函数是与分隔平面的(有符号的)距离,你可能希望计算错误分类示例的平均值,而另外一个度量标准可能利用所得的类别概率(在 SVC 的`probability=True`时内部进行 Platt 校准)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接