专栏名称: 数据分析1480
积土成山,积水成渊!!定期与大家分享数据分析和挖掘方面的干货,包括分析工具R与Python的使用、数据分析的案例、及最新的数据领域资讯。
目录
相关文章推荐
新疆949交通广播  ·  女子得了流感 硬扛3天变“白肺”! ·  昨天  
人民日报评论  ·  找准发力点,干出好年景 | 今日谈 ·  昨天  
求是网  ·  发展动力潜力不断激活 ·  昨天  
CHINADAILY  ·  Editorial丨Youths' ... ·  3 天前  
后沙月光  ·  英国朋友谈哪吒登顶! ·  4 天前  
51好读  ›  专栏  ›  数据分析1480

教你使用4 个样本就可以画出 ROC 曲线

数据分析1480  · 公众号  ·  · 2020-03-30 09:00

正文


ROC 曲线,作为评价机器学习模型敏感度的一条重要曲线,在分类任务评价机制中应用较多。

但是很多朋友对于 ROC 曲线的理解还是有些模糊,心想着 x 轴是 FPR , y 轴是 TPR , 组条曲线有些神秘。

今天,咱们用 4 个样本,使用逻辑回归,分类阈值分别从 0.,0.2,0.4,0.6,0.8,1.0,依次变化,分别求出对应分类阈值的 FRP 和 TPR 值。

这样不就得到 6 个 (FRP,TPR) 点,组个曲线,不就是 ROC 曲线吗!

# 有监督任务,四个样本的实际值:

target = np.array([1,0,1,0])

计算公式:

def TPR(TP,FN):
return TP / (TP + FN)

def FPR(FP,TN):
return FP / (FP + TN)

使用逻辑回归 Logistic regression, 得到 4 个样本的概率分布为: [0.8,0.6,0.4,0.2]

当分类阈值参数 alpha 为 0.0 时

y0 = np.array([1,1,1,1])
p00 = [TPR(2,0),FPR(2,0)]
p00

结果:

[1.0, 1.0]

当分类阈值参数 alpha 为 0.2 时

# 同理,假如分类阈值 alpha = 0.2
#
y02 = np.array([1,1,1,1])
p02 = [TPR(2,0),FPR(2,0)]
p02

结果:

[1.0, 1.0]

当分类阈值参数 alpha 为 0.4 时

target = np.array([1,0,1,0])
y04 = np.array([1,1,1,0])
p04 = [TPR(2,0),FPR(1,1)]
p04

结果:

[1.0, 0.5]

当分类阈值参数 alpha 为 0.6 时

# 同理,假如分类阈值 alpha = 0.6
#
target = np.array([1,0,1,0])
y06 = np.array([1,1,0,0])
p06 = [TPR(1,1),FPR(1,1)]
p06

结果:

[0.5, 0.5]

当分类阈值参数 alpha 为 0.8 时

# 同理,假如分类阈值 alpha = 0.8
#
target = np.array([1,0,1,0])
y08 = np.array([1,0,0,0])
p08 = [TPR(1,1),FPR(0,2)]
p08

结果:

[0.5






请到「今天看啥」查看全文