python计算AUC、Accuracy、Recall、Precision和PPV
import numpy as np
import cv2
import seaborn as sns
import matplotlib.pyplot as plt
# 也可以直接采用这个进行计算
from sklearn.metrics import confusion_matrix, accuracy_score, f1_score, roc_auc_score, recall_score, precision_score
# 加载confusion图,并显示对应的图像表示混淆矩阵的信息
img = cv2.imread("confusion_figure.jpg")
plt.imshow(img)def calculate_metrics(gt, pred):""":param gt: 数据的真实标签,一般对应二分类的整数形式,例如:y=[1,0,1,0,1]:param pred: 输入数据的预测值,因为计算混淆矩阵的时候,内容必须是整数,所以对于float的值,应该先调整为整数:return: 返回相应的评估指标的值""""""confusion_matrix(y_true,y_pred,labels,sample_weight,normalize)y_true:真实标签;y_pred:预测概率转化为标签;labels:用于标签重新排序或选择标签子集;sample_weight:样本权重;normalize:在真实(行)、预测(列)条件或所有总体上标准化混淆矩阵;"""print("starting!!!-----------------------------------------------")sns.set()fig, (ax1, ax2) = plt.subplots(figsize=(10, 8), nrows=2)confusion = confusion_matrix(gt, pred)# 打印具体的混淆矩阵的每个部分的值print(confusion)# 从左到右依次表示TN、FP、FN、TPprint(confusion.ravel())# 绘制混淆矩阵的图sns.heatmap(confusion,annot=True)ax2.set_title('sns_heatmap_confusion_matrix')ax2.set_xlabel('y_pred')ax2.set_ylabel('y_true')fig.savefig('sns_heatmap_confusion_matrix.jpg', bbox_inches='tight')# 混淆矩阵的每个值的表示TP = confusion[1, 1]TN = confusion[0, 0]FP = confusion[0, 1]FN = confusion[1, 0]# 通过混淆矩阵计算每个评估指标的值print('AUC:',roc_auc_score(gt, pred))print('Accuracy:', (TP + TN) / float(TP + TN + FP + FN))print('Sensitivity:', TP / float(TP + FN))print('Specificity:', TN / float(TN + FP))print('PPV:',TP / float(TP + FP))print('Recall:',TP / float(TP + FN))print('Precision:',TP / float(TP + FP))# 用于计算F1-score = 2*recall*precision/recall+precision,这个情况是比较多的P = TP / float(TP + FP)R = TP / float(TP + FN)print('F1-score:',(2*P*R)/(P+R))print('True Positive Rate:',round(TP / float(TP + FN)))print('False Positive Rate:',FP / float(FP + TN))print('Ending!!!------------------------------------------------------')# 采用sklearn提供的函数验证,用于对比混淆矩阵方法与这个方法的区别print("the result of sklearn package")auc = roc_auc_score(gt,pred)print("sklearn auc:",auc)accuracy = accuracy_score(gt,pred)print("sklearn accuracy:",accuracy)recal = recall_score(gt,pred)precision = precision_score(gt,pred)print("sklearn recall:{},precision:{}".format(recal,precision))print("sklearn F1-score:{}".format((2*recal*precision)/(recal+precision)))# 输入真实的样本和对应的标签
y = [1,0,1,1,0]
pred = [0,1,1,0,0]
# 实例化
calculate_metrics(y, pred)
python计算AUC、Accuracy、Recall、Precision和PPV相关推荐
- python计算auc的代码_python是怎么计算auc指标的?
1.安装scikit-learn 1.1Scikit-learn 依赖Python (>= 2.6 or >= 3.3), NumPy (>= 1.6.1), SciPy (> ...
- python计算AUC值
AUC简介 AUC(Area Under Curve)被定义为ROC曲线下与坐标轴围成的面积,显然这个面积的数值不会大于1.AUC被广泛应用在多标签分类中衡量分类结果.尤其是样本分布不均时,一般采用A ...
- python计算auc值_Python计算AUC
AUC(Area under curve)是机器学习常用的二分类评测手段,直接含义是ROC曲线下的面积.另一种解释是:随机抽出一对样本(一个正样本,一个负样本),然后用训练得到的分类器来对这两个样本进 ...
- 机器学习中的评价指标(分类指标评Accuracy、Precision、Recall、F1-score、ROC、AUC )(回归指标评价MSE、RMSE、MAE、MAPE、R Squared)
文章目录 1.机器学习中的评价指标 基础 (一)分类指标评价 1.Accuracy 2.Precision.查准率 3.Recall.查全率 4.F1-score 举个例子: 5.ROC 6.AUC ...
- 机器学习11. ROC曲线、AUC值、Accuracy、Precision、Recall 含义
AUC/ROC,Accuracy,Precision,Recall 含义.查准率,查全率,样本均衡问题 部分图片转自这里 行的True和False表示预测为正负 列的Pos和Neg表示真实的正负 表哥 ...
- Spark - AUC、Accuracy、Precision、Recall、F1-Score 理论与实战
一.引言 推荐场景下需要使用上述指标评估离.在线模型效果,下面对各个指标做简单说明并通过 spark 程序全部搞定. 二.指标含义 1.TP.TN.FP.FN 搜广推场景下最常见的就是 Ctr 2 分 ...
- R语言构建混淆矩阵(仿真数据)并基于混淆矩阵(confusion matrix)计算并计算Accuracy、Precision、Recall(sensitivity)、F1、Specificity指标
R语言构建混淆矩阵(仿真数据)并基于混淆矩阵(confusion matrix)计算并计算Accuracy.Precision.Recall(sensitivity).F1.Specificity指标 ...
- 机器学习分类模型评价指标之Accuracy、Precision、Recall、F-Score、P-R Curve、AUC、AP 和 mAP
前文:https://www.cnblogs.com/odesey/p/16902836.html 介绍了混淆矩阵.本文旨在说明其他机器学习模型的评价指标. 1. 准确率(Accuracy-Acc) ...
- python计算precision@k、recall@k和f1_score@k
sklearn.metrics中的评估函数只能对同一样本的单个预测结果进行评估,如下所示: from sklearn.metrics import classification_reporty_tru ...
最新文章
- 为什么需要用户自定义类加载器及具体实现
- Google Mesa概览
- 动态数据交换 python_如何用 Python 和 Streamlit 做交互式数据分析产品?
- Z-Blog 扩展数据库 字段 二次开发
- linux的常用操作——静态库
- linux java文件 core_linux下部署.net core/java
- React Router学习
- 《Linux编程》学习笔记 ·001【基本操作、常用命令】
- snmp信息的查询命令snmpwalk
- 老妈~老妈~我爱你~~~~~~~阿弥陀佛保佑你~~~~~~~
- 哪里有深入学习Oracle的资料
- python的输入来源包括文件输入_【python】文件的输入和输出
- HBase开发: Java API 管理表
- 开源软件之lftp的使用
- 2021-09-03 Elasticsearch基操
- 【系】微信小程序云开发实战坚果商城-开篇
- 华夏ERP使用的多租户到底是什么技术
- 关于gvim的高级应用
- Octave简明教程
- OpenGL Glut 初学
热门文章
- Mahout in action 中文版-3.推荐器的数据表达
- 展台设计:企业展台搭建都有哪些途径?
- 原生javascript-图片爆炸的效果
- 手机充电器的D+,D-电压
- 入门大数据就业前景怎么样?
- OneDrive容量缩水,微软安抚用户:Office 365免费用一年
- 新手轻松日赚300+搬砖项目详解
- lol服务器显示40ms,一个简单insert 语句执行 40ms 原因剖析
- Nature破解癌王生长关键:真菌由肠道入侵胰腺,定植增加3000倍,富集Malassezia菌...
- Delphi 汇编学习(八)--- 图像水平镜像垂直镜像的极致优化