gpt4 book ai didi

python - 如何解释 scikit-learn 中的 roc_curve(Test,Predictions)

转载 作者:行者123 更新时间:2023-11-30 09:21:13 26 4
gpt4 key购买 nike

我正在使用 scikit-learn 来解决分类问题,以预测机会的获胜或损失。
我使用了这段代码:

fpr, tpr, thresholds =roc_curve(yTest,predictions)

结果是:

    (array([ 0.       ,  0.2628946,  1.       ]),
array([ 0. , 0.73692477, 1. ]),
array([2, 1, 0]))

我知道使用 fpr、tpr 对于在 (1,0) 范围内变化的各种阈值计算 AUC。理想情况下,我知道阈值应该在 1 到 0 之间。

但是,这里的阈值是 2,1,0。从中理解什么以及如何解释它。

示例代码看起来不错:

import numpy as np
from sklearn import metrics
y = np.array([1, 1, 2, 2])
scores = np.array([0.1, 0.4, 0.35, 0.8])
fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)
>>>fpr
array([ 0. , 0.5, 0.5, 1. ])
>>>tpr
array([ 0.5, 0.5, 1. , 1. ])
>>> thresholds
array([ 0.8 , 0.4 , 0.35, 0.1 ])

我的 Predict_proba(yTest) 是:

[ 0.09573287  0.90426713]
[ 0.14987409 0.85012591]
[ 0.16348188 0.83651812]
...,
[ 0.13957409 0.86042591]
[ 0.04478675 0.95521325]
[ 0.03492729 0.96507271]

最佳答案

阈值不限于[0;1]。

只有 TPR 和 FPR 是速率,即 0 到 1。

如果您查看文档,它会告诉您如何得出值 2:

Decreasing thresholds on the decision function used to compute fpr and tpr. thresholds[0] represents no instances being predicted and is arbitrarily set to max(y_score) + 1.

如果您的输入数据的值为[100,42,42,3.14],那么它将考虑阈值[101, 100, 42, 3.14]

从您的阈值 [2,1,0] 来看,您没有以正确的方式使用此函数。您可能已经切换了这两个参数?因为输出表明你的输入分数要么都是 0,要么是 1。在这样的数据上,ROC 曲线会退化,你只需使用精度和召回率。但如果你交换了分数和标签,你可能会得到真正的ROC曲线。

关于python - 如何解释 scikit-learn 中的 roc_curve(Test,Predictions),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37941753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com