python正确的的画出ROC曲线

您所在的位置:网站首页 spss显著性为只有一个点出来 python正确的的画出ROC曲线

python正确的的画出ROC曲线

2024-07-15 07:26| 来源: 网络整理| 查看: 265

ROC曲线简介

受试者工作特征曲线 (receiver operating characteristic curve,简称ROC曲线),又称为感受性曲线(sensitivity curve)。得此名的原因在于曲线上各点反映着相同的感受性,它们都是对同一信号刺激的反应,只不过是在几种不同的判定标准下所得的结果而已。为了了解ROC曲线的意义,我们首先得了解一些变量。以下定义引自维基百科 最近在做一些分类的任务,评价中的ROC曲线在很多地方都会用得到,特别在论文中。在此记录一下在做ROC曲线的过程中遇到的一些坑。

1.画出来的ROC曲线是只有一个拐点的曲线

在这里插入图片描述

在这里插入图片描述 更极端的像上图这种直接是一条曲线,这是因为在计算fpr与tpr过程中,会使用到数据的真实标注以及模型的预测结果,在计算fpr与tpr以及阈值时,preds的值应该使用分类器输出的概率值,而不是准确的分类结果0/1。

输出的图像不过原点

就像上图一样,输出的图像看起来不经过远点,将坐标轴的刻度设置的大一些,为[-0.05,1.05]即可。

分类器如何输出概率

SVM分类器中,将参数probability=True设置即可,神经网络中,在最后的全连接层输出结果上加上Softmax操作即可输出概率。

代码 ''' Author: weifeng liu Date: 2022-02-12 20:53:17 LastEditTime: 2022-02-12 21:07:02 LastEditors: Please set LastEditors Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE FilePath: \lirui\new_Data\roc.py ''' import pandas as pd import numpy as np import matplotlib.pyplot as plt import sklearn.metrics as metrics def plot_ROC(labels,preds,savepath): """ Args: labels : ground truth preds : model prediction savepath : save path """ fpr1, tpr1, threshold1 = metrics.roc_curve(labels, preds) ###计算真正率和假正率 roc_auc1 = metrics.auc(fpr1, tpr1) ###计算auc的值,auc就是曲线包围的面积,越大越好 plt.figure() lw = 2 plt.figure(figsize=(10, 10)) plt.plot(fpr1, tpr1, color='darkorange', lw=lw, label='AUC = %0.2f' % roc_auc1) ###假正率为横坐标,真正率为纵坐标做曲线 plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--') plt.xlim([-0.05, 1.05]) plt.ylim([-0.05, 1.05]) plt.xlabel('1 - Specificity') plt.ylabel('Sensitivity') # plt.title('ROCs for Densenet') plt.legend(loc="lower right") # plt.show() plt.savefig(savepath) #保存文件

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3