0
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve, auc , roc_auc_score
import numpy as np

correct_classification = np.array([0,1])
predicted_classification = np.array([1,1])

false_positive_rate, true_positive_rate, tresholds = roc_curve(correct_classification, predicted_classification)

print(false_positive_rate)
print(true_positive_rate)

来自https://en.wikipedia.org/wiki/Sensitivity_and_specificity

True positive: Sick people correctly identified as sick 
False positive: Healthy people incorrectly identified as sick 
True negative: Healthy people correctly identified as healthy 
False negative: Sick people incorrectly identified as healthy

我正在使用这些值 0:生病,1:健康

来自https://en.wikipedia.org/wiki/False_positive_rate

阳性率=假阳性/(假阳性+真阴性)

假阳性数:0 真阴性数:1

因此误报率 = 0 / 0 + 1 = 0

读取 roc_curve 的返回值(http://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_curve.html#sklearn.metrics.roc_curve):

fpr : 数组,形状 = [>2]

增加误报率,使得元素 i 是分数 >= 阈值 [i] 的预测的误报率。

tpr : 数组,形状 = [>2]

增加真阳性率,使元素 i 是分数 >= 阈值 [i] 的预测的真阳性率。

阈值:数组,形状 = [n_thresholds]

降低用于计算 fpr 和 tpr 的决策函数的阈值。thresholds[0] 表示没有实例被预测,并且任意设置为 max(y_score) + 1。

这与我手动计算误报率的值有何不同?阈值是如何设置的?此处提供了有关阈值的一些模式信息:https ://datascience.stackexchange.com/questions/806/advantages-of-auc-vs-standard-accuracy但我对它如何适合此实现感到困惑?

4

2 回答 2

4

在此处输入图像描述

在上面的演示中,阈值是橙色条。00 类的分布为红色(分类器的输出),第 1 类的分布为蓝色(相同,分类器输出的概率分布)。它适用于属于一类或另一类的概率:如果一个样本有 [0.34,0.66] 的输出,那么即使 0.66 的概率更高,第 1 类的阈值 0.25 也会使他进入第 1 类。

您不是在 ROC 曲线上工作,而是在班级中工作。

我希望它回答了这个问题(对不起,如果没有,如果需要我会更准确)

于 2018-09-04T15:02:37.093 回答
2

首先,维基百科正在考虑生病=1。

真阳性:病人被正确识别为病人

其次,每个模型都有一些基于正类概率的阈值(通常为 0.5)。

因此,如果阈值为 0.1,则所有概率大于 0.1 的样本都将被分类为正样本。预测样本的概率是固定的,阈值是可变的。

roc_curvescikit-learn 中,阈值从以下值增加:

 0 (or minimum value where all the predictions are positive) 

1 (Or the last point where all predictions become negative).

中间点是根据预测从正面到负面的变化来决定的。

例子:

Sample 1      0.2
Sample 2      0.3
Sample 3      0.6
Sample 4      0.7
Sample 5      0.8

这里的最低概率是 0.2,所以有意义的最小阈值是 0.2。现在,随着我们不断增加阈值,由于此示例中的点非常少,阈值点将在每个概率处发生变化(并且等于该概率,因为那是正负数变化的点)

                     Negative    Positive
               <0.2     0          5
Threshold1     >=0.2    1          4
Threshold2     >=0.3    2          3
Threshold3     >=0.6    3          2
Threshold4     >=0.7    4          1
Threshold5     >=0.8    5          0
于 2018-09-04T16:43:11.787 回答