sklearn分类任务模型评价指标汇总与AUC-ROC曲线及代码示例
文章目录
- 1. 分类指标
- 2. 整合工具函数
- 3. 使用示例
1. 分类指标
二分类可以参考下图:
准确率 = 预测对的样本数 / 全部样本数
精确率 = 被预测出的正例样本数 / 预测为正例的样本数
召回率 = 预测且真的是正例的样本数 / 正例的样本数
二分类F1 = 2 * 精确率 * 召回率 /(精确率 + 召回率)
多分类中F1一般用Macro F1
或Micro 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曲线及代码示例相关推荐
- MindSpore分类指标之准确率、AUC/ROC详解(一)
一.评价指标基本概念 评价指标是针对模型性能优劣的一个定量指标. 一种评价指标只能反映模型一部分性能,如果选择的评价指标不合理,那么可能会得出错误的结论,故而应该针对具体的数据.模型选取不同的的评价指 ...
- ROC曲线及其代码实现
一.基本概念 ROC曲线(Receiver Operating Characteeristic Curve)是显示Classification模型真正率和假正率之间折中的一种图形化方法. 解读ROC图 ...
- 目标检测评价指标汇总—mAP,PR曲线,F1分数,FPPI,log-average miss rate等
对于了解目标检测的评价指标是很重要的,否则自己不懂这个代表什么意思,如何调参.网上有太多资料,可是杂乱,甚至有一乱说,记录下自己所学,总结下,也分享出来,也便于自己自己复习. 分为三块,1.解释相关概 ...
- Sklearn机器学习——ROC曲线、ROC曲线的绘制和AUC面积、运用ROC曲线找到最佳阈值
目录 1 ROC曲线 2 ROC曲线的绘制 2.1 Sklearn中的ROC曲线和AUC面积 2.2 利用ROC曲线找到最佳阈值 1 ROC曲线 上篇博客介绍了ROC曲线的概率和阈值还有SVM实现概率 ...
- 机器学习常用评价指标:ACC、AUC、ROC曲线
文章目录 一.混淆矩阵 二.评价指标 1.准确度(Accuracy) 2.AUC ROC曲线 举例 如何画ROC曲线 AUC的计算 AUC意味着什么 为什么使用ROC曲线 参考 一.混淆矩阵 基于样本 ...
- python:Sklearn SVM使用留一法时如何绘制ROC曲线与计算AUC
在前面的一篇文章我们给出了使用Sklearn 中的SVM进行分类时如何使用留一法来进行分类. python基于sklearn的SVM和留一法(LOOCV)进行二分类 如何在使用留一法时绘制ROC曲线和 ...
- 基于逻辑回归的癌症分类预测-良/恶性乳腺癌肿瘤预测及ROC曲线绘制
逻辑回归 逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归.由于算法的简单和高效,在实际中应用非常广泛.逻辑回归是解决二分类问题 ...
- 机器学习之支持向量机SVM之python实现ROC曲线绘制(二分类和多分类)
目录 一.ROC曲线 二.TP.FP.TN.FN 三. python绘制ROC曲线(二分类) 1.思路 2.关键代码 3.完整代码 四. python绘制ROC曲线(多分类) 五.参考文献 一.ROC ...
- 目标检测和分类的评价指标
准确率 (Accuracy),混淆矩阵 (Confusion Matrix),精确率(Precision),召回率(Recall),平均正确率(AP),mean Average Precision(m ...
最新文章
- Android ListView item设置分割线以及分割线宽度
- python 网页cookie的使用
- java token跨域,java 允许跨域
- 网络编程-之粘包现象
- 对css类名className的一些操作的函数
- 如何评判软件测试的效率,如何衡量测试效率,提高测试效率?
- maven导出runnable jar
- java 监听端口_java游戏服务器检查报告(经验分享)
- ASP.NET MVC Html.BeginForm用法1
- 转 Ubuntu16.04+QT4.8.7开发环境搭建
- 自定义List接口及相关方法
- java 建立缓存_java动态缓存——创建一个简单的缓存
- 设计模式之GOF23外观模式
- linux安装svn服务器的两种方式(转载)
- unity检测范围内敌人_Unity判断周围是否有敌人
- jetracer——自动驾驶车项目(basic_motion.ipynb)
- ESP8266-Arduino编程实例-磁簧开关传感器驱动
- 免费小程序制作平台体验感受分享
- C++ 操作 (读写)json 文件及jsoncpp的配置
- Bqq服务器的缓存文件放什么目录,ArcGIS Runtime 入门(5-2)ArcGIS Runtime运行剖析-缓冲区分析为例...
热门文章
- 佐治亚理工学院 计算投资公开课第六周作业 投资策略分析平台
- mysql 回滚_一个集审核、执行、备份及生成回滚语句于一身的MySQL运维工具
- 计算机二级数据模型三要素,2017年计算机二级公共基础知识重点讲解:数据模型...
- php处理html数据类型,PHP html_entity_decode() 函数 | 菜鸟教程
- 用SSE加速CPU蒙皮计算
- UE3采用多进程编译Shader
- 关于id Tech5的MegaTexture技术
- Specified key was too long; max key length is 767 bytes
- 瑞驰vCloud超融合让数据中心业务更稳定
- java日志记录的5条规则