预备知识

对于二元分类结果评价,ROC曲线是常用标准,其使用TPR与FPR绘制而成。(相关知识推荐博文:一文让你彻底理解准确率,精准率,召回率,真正率,假正率,ROC/AUC) 而TPR与FPR的计算是根据选定的一系列阈值(Threshold)得到的,本文的目的便是寻找最优阈值,在假正率FPR与真正率TPR之间做折中。ROC用以判断分类模型好坏,是否足以区分两类对象,而寻找最佳阈值可以使分类效果达到最优,符合实际应用要求。

计算方法

Youden Index

参考链接:全面了解ROC曲线

如图所示,该方法的思想是找到横坐标 1 − S p e c i f i c i t y 1-Specificity1−Specificity 与 纵坐标 S e n s i t i v i t y SensitivitySensitivity 差异最大的点所对应的阈值。在本文中描述为:
i n d e x = a r g m a x ( T P R − F P R ) , index= argmax (TPR-FPR),index=argmax(TPR−FPR),
最终可以得到最优阈值及其ROC曲线坐标:
t h o p t i m a l = t h r e s h o l d s [ i n d e x ] th_{optimal}=thresholds[index]thoptimal​=thresholds[index]

p o i n t o p t i m a l = ( F P R [ i n d e x ] , T P R [ i n d e x ] ) point_{optimal}=(FPR[index], TPR[index])pointoptimal​=(FPR[index],TPR[index])

很简单吧!

def Find_Optimal_Cutoff(TPR, FPR, threshold):y = TPR - FPRYouden_index = np.argmax(y)  # Only the first occurrence is returned.optimal_threshold = threshold[Youden_index]point = [FPR[Youden_index], TPR[Youden_index]]return optimal_threshold, point

ROC的计算及绘制也放一下:

def ROC(label, y_prob):"""Receiver_Operating_Characteristic, ROC:param label: (n, ):param y_prob: (n, ):return: fpr, tpr, roc_auc, optimal_th, optimal_point"""fpr, tpr, thresholds = metrics.roc_curve(label, y_prob)roc_auc = metrics.auc(fpr, tpr)optimal_th, optimal_point = Find_Optimal_Cutoff(TPR=tpr, FPR=fpr, threshold=thresholds)return fpr, tpr, roc_auc, optimal_th, optimal_point
fpr, tpr, roc_auc, optimal_th, optimal_point = ROC(y_labels, y_preds)plt.figure(1)
plt.plot(fpr, tpr, label=f"AUC = {roc_auc:.3f}")
plt.plot([0, 1], [0, 1], linestyle="--")
plt.plot(optimal_point[0], optimal_point[1], marker='o', color='r')
plt.text(optimal_point[0], optimal_point[1], f'Threshold:{optimal_th:.2f}')
plt.title("ROC-AUC")
plt.xlabel("False Positive Rate")
plt.ylabel("True Positive Rate")
plt.legend()
plt.show()

结果


红色的点即为最佳阈值啦,完结撒花。

参考网址:

  1. https://blog.csdn.net/weixin_43543177/article/details/107565947

使用约登指数寻找最佳ROC曲线阈值相关推荐

  1. 【机器学习系列】【模型评价】【ROC曲线、约登指数最佳阈值】一个函数中实现约登指数计算并集成到ROC图中,给出默认阈值及最佳阈值下的混淆矩阵

    输入实际标签.预测的概率值.预测标签,计算最佳阈值,输出ROC曲线,输出默认阈值下的混淆矩阵和最佳阈值下的混淆矩阵 目录 使用约登指数计算最佳阈值 result_evaluation()函数实现约登指 ...

  2. ROC/AUC 简易试验 最佳截断点 混淆矩阵 敏感度 特异度 约登指数 各个指标置信区间

    ROC/AUC 简易试验 最佳截断点 敏感度 特异度 约登 召回率 混淆矩阵 学习链接, 鼠标放这里 常规学习下面这个矩阵 金标准 + - 模型 + True Positives(TP) False ...

  3. python编写自定义函数计算约登值(约登指数、Youden Index)、寻找最佳阈值(threshold、cutoff)、可视化ROC曲线并在曲线中标记最佳阈值及其数值标签

    python编写自定义函数计算约登值(约登指数.Youden Index).寻找最佳阈值(threshold.cutoff).可视化ROC曲线并在曲线中标记最佳阈值及其数值标签 目录

  4. ROC曲线-阈值评价标准

    ROC曲线指受试者工作特征曲线 / 接收器操作特性曲线(receiver operating characteristic curve), 是反映敏感性和特异性连续变量的综合指标,是用构图法揭示敏感性 ...

  5. python的roc曲线与阈值_浅谈ROC曲线的最佳阈值如何选取

    为了获取ROC曲线的最佳阈值,需要使用一个指标--约登指数,也称正确指数. 借助于matlab的roc函数可以得出计算. % 1-specificity = fpr % Sensitivity = t ...

  6. Sklearn机器学习——ROC曲线、ROC曲线的绘制和AUC面积、运用ROC曲线找到最佳阈值

    目录 1 ROC曲线 2 ROC曲线的绘制 2.1 Sklearn中的ROC曲线和AUC面积 2.2 利用ROC曲线找到最佳阈值 1 ROC曲线 上篇博客介绍了ROC曲线的概率和阈值还有SVM实现概率 ...

  7. ROC 曲线/准确率、覆盖率(召回)、命中率、Specificity(负例的覆盖率)

      欢迎关注博主主页,学习python视频资源 sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频教程) https://study.163.com/course/introduction.ht ...

  8. SVC模型评估指标与ROC曲线

    目录 1.解决二分类SVC中的样本不均衡问题 1.1 概述 1.2 SVC参数class_weight 1.3 参数class_weight的使用 2.SVC模型评估指标 2.1 混淆矩阵(Confu ...

  9. (8) 支持向量机(下)(模型评估指标、ROC曲线)

    文章目录 1 二分类SVC的进阶 1.1 参数C的理解进阶 1.2 二分类SVC中的样本不均衡问题:重要参数class_weight 2 SVC的模型评估指标 2.1 混淆矩阵 2.1.1 模型整体效 ...

最新文章

  1. Java游戏编程前篇 修改eclipse背景颜色
  2. 1986年讲MDCT的基础性论文
  3. SAP ITS mobile 简介
  4. 轻轻松松明白什么是反射,反射有什么用,简单上手反射以及反射的优缺点
  5. Redis 入门笔记
  6. Fanout交换器-编写生产者
  7. antlr java_使用ANTLR和Java创建外部DSL
  8. Spring Boot笔记-使用RestTemplate优雅的调用百度ORC接口
  9. 改变select组件的option选中状态的快捷方法
  10. python课堂_python课堂整理6---字典
  11. php如何判断是ajax,php如何判断是ajax
  12. 通过官网下载KITTI数据集失败解决方法
  13. java socket保活_gb28181简单实现sip信令服务器(java版基于springboot):四、sip摄像头心跳保活、推流(tcp/udp)和结束推流...
  14. Linux 安装谷歌浏览器
  15. 摘要认证 java_摘要认证及实现HTTP digest authentication
  16. 第1周练习 货币转换 I
  17. 微信小程序(游戏)----五子棋(AI篇)
  18. Linux+Apache+MySQL+PHP+FrontPage完全安装手册(转)
  19. 什么软件可以测试吃鸡帧数,RTX 3080 有多大升级必要?绝地求生帧数实测
  20. 计算物理作业python代码_使用 Python 解决计算物理问题

热门文章

  1. Unity通过鼠标点击生成网格模型
  2. 88句名言,很深刻的
  3. 边缘设备、系统及计算杂谈(12)——k8s学习之二
  4. Flink on Yarn三部曲之一:准备工作
  5. 上海市房管局:物业公司信用将能手机查询
  6. 获得好资料都的渠道,老铁告别坑人的百度吧
  7. 一个数如果恰好等于它的因子之和,这个数就称为完数。例如6=1+2+3.编程 找出1000以内的所有完数
  8. 2021年氯化工艺报名考试及氯化工艺考试内容
  9. 0基础用vagrant 快速构建larval开发环境 (我杨某人尽力描述了,都有从0介绍)
  10. Android音频——音量调节