文章目录

  • 1. 分类指标
  • 2. 整合工具函数
  • 3. 使用示例

1. 分类指标

二分类可以参考下图:

准确率 = 预测对的样本数 / 全部样本数
精确率 = 被预测出的正例样本数 / 预测为正例的样本数
召回率 = 预测且真的是正例的样本数 / 正例的样本数
二分类F1 = 2 * 精确率 * 召回率 /(精确率 + 召回率)

多分类中F1一般用Macro F1Micro F1

  • Macro F1:将n分类的评价拆成n个二分类的评价,计算每个二分类任务的F1 score,这些计算出来的F1 score求平均即为Macro F1
  • Micro F1:将n分类的评价拆成n个二分类的评价,将n个二分类评价的TP、FP、RN对应相加(看混淆矩阵),计算得出每组的准确率与召回率,最后按照二分类计算F1的方法,代入公式得出的F1值即为Micro F1

因为Macro F1计算时每个样本的F1权重相同,最后求平均会受样本数量少的类别影响大,在数据各类样本不均衡的情况下,采用Micro F1较为合理,其他情况两者都行,都是F1越大越好

2. 整合工具函数

使用工具方法:

import matplotlib.pyplot as pltdef get_score(true_data, result_prediction, save_roc_path=None, model_name=None):"""分类问题的得分辅助函数:param true_data: 真实值,是要预测的目标:param result_prediction: 预测值,用模型预测出来的值:param save_roc_path: 保存roc曲线的路径:param model_name: 模型名:return:"""from sklearn.metrics import accuracy_scorefrom sklearn.metrics import precision_scorefrom sklearn.metrics import recall_score, f1_scorefrom sklearn.metrics import roc_curve, aucacc = accuracy_score(true_data, result_prediction) # 准确率prec = precision_score(true_data, result_prediction) # 精确率recall = recall_score(true_data, result_prediction) # 召回率f1 = f1_score(true_data, result_prediction) # F1fpr, tpr, thersholds = roc_curve(true_data, result_prediction)roc_auc = auc(fpr, tpr)plt.plot(fpr, tpr, 'k--', label='ROC (area = {0:.2f})'.format(roc_auc), lw=2)plt.xlabel('False Positive Rate')plt.ylabel('True Positive Rate')plt.title('ROC Curve')plt.legend(loc="lower right")if save_roc_path:plt.savefig(save_roc_path)plt.show()score_list = [acc, prec, recall, f1, roc_auc]print('模型{}:'.format(model_name), score_list)return score_list

3. 使用示例

import matplotlib.pyplot as plt
import numpy as npdef get_score(true_data, result_prediction, save_roc_path=None, model_name=None):"""分类问题的得分辅助函数:param true_data: 真实值,是要预测的目标:param result_prediction: 预测值,用模型预测出来的值:param save_roc_path: 保存roc曲线的路径:param model_name: 模型名:return:"""from sklearn.metrics import accuracy_scorefrom sklearn.metrics import precision_scorefrom sklearn.metrics import recall_score, f1_scorefrom sklearn.metrics import roc_curve, aucacc = accuracy_score(true_data, result_prediction)prec = precision_score(true_data, result_prediction)recall = recall_score(true_data, result_prediction)f1 = f1_score(true_data, result_prediction)fpr, tpr, thersholds = roc_curve(true_data, result_prediction)roc_auc = auc(fpr, tpr)plt.plot(fpr, tpr, 'k--', label='ROC (area = {0:.2f})'.format(roc_auc), lw=2)plt.xlabel('False Positive Rate')plt.ylabel('True Positive Rate')plt.title('ROC Curve')plt.legend(loc="lower right")if save_roc_path:plt.savefig(save_roc_path)plt.show()score_list = [acc, prec, recall, f1, roc_auc]print('模型{}:'.format(model_name), score_list)return score_listif __name__ == '__main__':my_score = get_score(true_data=np.random.randint(0, 2, size=100),  # 假设为真实值result_prediction=np.random.randint(0, 2, size=100),  # 假设为预测值)

返回值为:

模型None: [0.53, 0.6136363636363636, 0.47368421052631576, 0.5346534653465346, 0.5391676866585067]

这里列表中的值依次为:[准确率,精确率,召回率,F1,roc-auc],并且得到ROC曲线:

sklearn分类任务模型评价指标汇总与AUC-ROC曲线及代码示例相关推荐

  1. MindSpore分类指标之准确率、AUC/ROC详解(一)

    一.评价指标基本概念 评价指标是针对模型性能优劣的一个定量指标. 一种评价指标只能反映模型一部分性能,如果选择的评价指标不合理,那么可能会得出错误的结论,故而应该针对具体的数据.模型选取不同的的评价指 ...

  2. ROC曲线及其代码实现

    一.基本概念 ROC曲线(Receiver Operating Characteeristic Curve)是显示Classification模型真正率和假正率之间折中的一种图形化方法. 解读ROC图 ...

  3. 目标检测评价指标汇总—mAP,PR曲线,F1分数,FPPI,log-average miss rate等

    对于了解目标检测的评价指标是很重要的,否则自己不懂这个代表什么意思,如何调参.网上有太多资料,可是杂乱,甚至有一乱说,记录下自己所学,总结下,也分享出来,也便于自己自己复习. 分为三块,1.解释相关概 ...

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

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

  5. 机器学习常用评价指标:ACC、AUC、ROC曲线

    文章目录 一.混淆矩阵 二.评价指标 1.准确度(Accuracy) 2.AUC ROC曲线 举例 如何画ROC曲线 AUC的计算 AUC意味着什么 为什么使用ROC曲线 参考 一.混淆矩阵 基于样本 ...

  6. python:Sklearn SVM使用留一法时如何绘制ROC曲线与计算AUC

    在前面的一篇文章我们给出了使用Sklearn 中的SVM进行分类时如何使用留一法来进行分类. python基于sklearn的SVM和留一法(LOOCV)进行二分类 如何在使用留一法时绘制ROC曲线和 ...

  7. 基于逻辑回归的癌症分类预测-良/恶性乳腺癌肿瘤预测及ROC曲线绘制

    逻辑回归 逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归.由于算法的简单和高效,在实际中应用非常广泛.逻辑回归是解决二分类问题 ...

  8. 机器学习之支持向量机SVM之python实现ROC曲线绘制(二分类和多分类)

    目录 一.ROC曲线 二.TP.FP.TN.FN 三. python绘制ROC曲线(二分类) 1.思路 2.关键代码 3.完整代码 四. python绘制ROC曲线(多分类) 五.参考文献 一.ROC ...

  9. 目标检测和分类的评价指标

    准确率 (Accuracy),混淆矩阵 (Confusion Matrix),精确率(Precision),召回率(Recall),平均正确率(AP),mean Average Precision(m ...

最新文章

  1. Android ListView item设置分割线以及分割线宽度
  2. python 网页cookie的使用
  3. java token跨域,java 允许跨域
  4. 网络编程-之粘包现象
  5. 对css类名className的一些操作的函数
  6. 如何评判软件测试的效率,如何衡量测试效率,提高测试效率?
  7. maven导出runnable jar
  8. java 监听端口_java游戏服务器检查报告(经验分享)
  9. ASP.NET MVC Html.BeginForm用法1
  10. 转 Ubuntu16.04+QT4.8.7开发环境搭建
  11. 自定义List接口及相关方法
  12. java 建立缓存_java动态缓存——创建一个简单的缓存
  13. 设计模式之GOF23外观模式
  14. linux安装svn服务器的两种方式(转载)
  15. unity检测范围内敌人_Unity判断周围是否有敌人
  16. jetracer——自动驾驶车项目(basic_motion.ipynb)
  17. ESP8266-Arduino编程实例-磁簧开关传感器驱动
  18. 免费小程序制作平台体验感受分享
  19. C++ 操作 (读写)json 文件及jsoncpp的配置
  20. Bqq服务器的缓存文件放什么目录,ArcGIS Runtime 入门(5-2)ArcGIS Runtime运行剖析-缓冲区分析为例...

热门文章

  1. 佐治亚理工学院 计算投资公开课第六周作业 投资策略分析平台
  2. mysql 回滚_一个集审核、执行、备份及生成回滚语句于一身的MySQL运维工具
  3. 计算机二级数据模型三要素,2017年计算机二级公共基础知识重点讲解:数据模型...
  4. php处理html数据类型,PHP html_entity_decode() 函数 | 菜鸟教程
  5. 用SSE加速CPU蒙皮计算
  6. UE3采用多进程编译Shader
  7. 关于id Tech5的MegaTexture技术
  8. Specified key was too long; max key length is 767 bytes
  9. 瑞驰vCloud超融合让数据中心业务更稳定
  10. java日志记录的5条规则