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相关推荐

  1. python计算auc的代码_python是怎么计算auc指标的?

    1.安装scikit-learn 1.1Scikit-learn 依赖Python (>= 2.6 or >= 3.3), NumPy (>= 1.6.1), SciPy (> ...

  2. python计算AUC值

    AUC简介 AUC(Area Under Curve)被定义为ROC曲线下与坐标轴围成的面积,显然这个面积的数值不会大于1.AUC被广泛应用在多标签分类中衡量分类结果.尤其是样本分布不均时,一般采用A ...

  3. python计算auc值_Python计算AUC

    AUC(Area under curve)是机器学习常用的二分类评测手段,直接含义是ROC曲线下的面积.另一种解释是:随机抽出一对样本(一个正样本,一个负样本),然后用训练得到的分类器来对这两个样本进 ...

  4. 机器学习中的评价指标(分类指标评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 ...

  5. 机器学习11. ROC曲线、AUC值、Accuracy、Precision、Recall 含义

    AUC/ROC,Accuracy,Precision,Recall 含义.查准率,查全率,样本均衡问题 部分图片转自这里 行的True和False表示预测为正负 列的Pos和Neg表示真实的正负 表哥 ...

  6. Spark - AUC、Accuracy、Precision、Recall、F1-Score 理论与实战

    一.引言 推荐场景下需要使用上述指标评估离.在线模型效果,下面对各个指标做简单说明并通过 spark 程序全部搞定. 二.指标含义 1.TP.TN.FP.FN 搜广推场景下最常见的就是 Ctr 2 分 ...

  7. R语言构建混淆矩阵(仿真数据)并基于混淆矩阵(confusion matrix)计算并计算Accuracy、Precision、Recall(sensitivity)、F1、Specificity指标

    R语言构建混淆矩阵(仿真数据)并基于混淆矩阵(confusion matrix)计算并计算Accuracy.Precision.Recall(sensitivity).F1.Specificity指标 ...

  8. 机器学习分类模型评价指标之Accuracy、Precision、Recall、F-Score、P-R Curve、AUC、AP 和 mAP

    前文:https://www.cnblogs.com/odesey/p/16902836.html 介绍了混淆矩阵.本文旨在说明其他机器学习模型的评价指标. 1. 准确率(Accuracy-Acc) ...

  9. python计算precision@k、recall@k和f1_score@k

    sklearn.metrics中的评估函数只能对同一样本的单个预测结果进行评估,如下所示: from sklearn.metrics import classification_reporty_tru ...

最新文章

  1. 为什么需要用户自定义类加载器及具体实现
  2. Google Mesa概览
  3. 动态数据交换 python_如何用 Python 和 Streamlit 做交互式数据分析产品?
  4. Z-Blog 扩展数据库 字段 二次开发
  5. linux的常用操作——静态库
  6. linux java文件 core_linux下部署.net core/java
  7. React Router学习
  8. 《Linux编程》学习笔记 ·001【基本操作、常用命令】
  9. snmp信息的查询命令snmpwalk
  10. 老妈~老妈~我爱你~~~~~~~阿弥陀佛保佑你~~~~~~~
  11. 哪里有深入学习Oracle的资料
  12. python的输入来源包括文件输入_【python】文件的输入和输出
  13. HBase开发: Java API 管理表
  14. 开源软件之lftp的使用
  15. 2021-09-03 Elasticsearch基操
  16. 【系】微信小程序云开发实战坚果商城-开篇
  17. 华夏ERP使用的多租户到底是什么技术
  18. 关于gvim的高级应用
  19. Octave简明教程
  20. OpenGL Glut 初学

热门文章

  1. Mahout in action 中文版-3.推荐器的数据表达
  2. 展台设计:企业展台搭建都有哪些途径?
  3. 原生javascript-图片爆炸的效果
  4. 手机充电器的D+,D-电压
  5. 入门大数据就业前景怎么样?
  6. OneDrive容量缩水,微软安抚用户:Office 365免费用一年
  7. 新手轻松日赚300+搬砖项目详解
  8. lol服务器显示40ms,一个简单insert 语句执行 40ms 原因剖析
  9. Nature破解癌王生长关键:真菌由肠道入侵胰腺,定植增加3000倍,富集Malassezia菌...
  10. Delphi 汇编学习(八)--- 图像水平镜像垂直镜像的极致优化