Deep Learning中常见图、线的绘制 -- ROC、PR、箱线图、折线图、损失变化图

一篇好的论文中图和表是必不可少的,本人结合自己写论文过程中用到的一些图、线,并对此稍加整合,汇总成本文。本文基于Python语言实现。本人研究方向为图像分割,故案例均与图像有关,望周知!

一、ROC曲线和PR曲线


首先需要介绍的是ROC曲线和PR曲线的绘制,这在深度学习的论文中是很常见的,一个神经网络模型的好坏可以通过ROC曲线和PR曲线呈现出来。

绘制ROC曲线和PR曲线,需要使用混淆矩阵,不了解混淆矩阵的小伙伴可以去混淆矩阵查阅,而建立一个混淆矩阵需要图像的label和预测值,注意的是:预测值必须是模型预测分类的概率,而不是0-1。若使用图像的label和0-1矩阵,则画出的ROC和PR曲线会是一条折线,而不是一条光滑的曲线。

  • 导包

import matplotlib.pyplot as plt

import numpy as np

from sklearn.metrics import roc_curve, auc, precision_recall_curve

from scipy.interpolate import interp1d

1.1 ROC曲线的绘制

1.载入.npy文件;pred_images.npy文件是模型预测的结果的汇总;gt_images.npy是ground truth的汇总

pred = np.load(‘pred_images.npy’)

gt = np.load(‘gt_images.npy’)

2.定义一个画布

plt.figure(1)

3.计算fpr、tpr及roc曲线的面积

fpr, tpr, thresholds = roc_curve((gt), pred)

roc_auc = auc(fpr, tpr)

4.绘制roc曲线

plt.plot(fpr, tpr, label=‘UNet (area = {:.4f})’.format(roc_auc), color=‘blue’)

5.格式个性化

font1 = {

‘weight’ : ‘normal’,

‘size’ : 14, }

plt.xlabel(“FPR (False Positive Rate)”, font1)

plt.ylabel(“TPR (True Positive Rate)”, font1)

plt.legend(loc=“lower right”, fontsize=12)

plt.xticks(fontsize=13)

plt.yticks(fontsize=13)

plt.axis([0, 1, 0.70, 1])

plt.title(‘ROC Curve’, font1)

plt.show()

print(‘Done!’)

在这里插入图片描述

1.2 PR曲线的绘制

1.载入.npy文件;pred_images.npy文件是UNet模型预测的结果的汇总;gt_images.npy是ground truth的汇总

pred = np.load(‘pred_images.npy’)

gt = np.load(‘gt_images.npy’)

2.定义一个画布

plt.figure(1)

precision, recall, thresholds = precision_recall_curve(gt, pred)

precision = np.fliplr([precision])[0] # so the array is increasing (you won’t get negative AUC)

recall = np.fliplr([recall])[0] # so

必看视频!获取2024年最新Java开发全套学习资料 备注Java

the array is increasing (you won’t get negative AUC)

AUC_prec_rec = np.trapz(precision, recall)

plt.plot(recall, precision, ‘-’, label=‘UNet (area = %.4f)’ % AUC_prec_rec, color=‘blue’)

font1 = {

‘weight’ : ‘normal’,

‘size’ : 14, }

plt.title(‘Precision Recall Curve’, font1)

plt.xlabel(“Recall”, font1)

plt.ylabel(“Precision”, font1)

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.legend(loc=“lower left”, fontsize=8)

plt.axis([0.2, 0.9, 0.7, 1])

plt.show()

在这里插入图片描述

二、折线图


a = np.random.randn(5)

x_list = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’]

fig = plt.figure()

plt.plot(x_list, a, marker=‘o’, markersize=3)

for a, b in zip(x_list, a):

plt.text(a, b, b, ha=‘center’, va=‘top’, fontsize=8)

plt.legend([‘line’])

plt.show()

在这里插入图片描述

三、箱型图


data_list = []

a = np.random.randn(10)

b = np.random.randn(10)

c = np.random.randn(10)

d = np.random.randn(10)

e = np.random.randn(10)

data_list.append(a)

data_list.append(b)

data_list.append©

最后

关于面试刷题也是有方法可言的,建议最好是按照专题来进行,然后由基础到高级,由浅入深来,效果会更好。当然,这些内容我也全部整理在一份pdf文档内,分成了以下几大专题:

  • Java基础部分

  • 算法与编程

  • 数据库部分

  • 流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)

这份面试文档当然不止这些内容,实际上像JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。

作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。
Cloud+SpringCloudAlibaba)

[外链图片转存中…(img-c1ObiqO5-1716406668975)]

这份面试文档当然不止这些内容,实际上像JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。

作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。

  • 28
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Python绘制多条ROC线的方法如下: 1. 导入所需的库:`import matplotlib.pyplot as plt` 2. 准备数据:获取多个分类器的真正率(True Positive Rate, TPR)和假正率(False Positive Rate, FPR)曲线数据,这些数据可以通过调用分类器的评估函数获得。 3. 创建像和子对象:`fig, ax = plt.subplots()` 4. 循环绘制线:使用`ax.plot()`函数,一次绘制每个分类器的ROC线,传入分类器的TPR和FPR数据作为参数。 5. 添加标题和标签:使用`ax.set()`函数,设置像的标题、X轴和Y轴的标签。 6. 设置例:如果需要,使用`ax.legend()`函数,设置例以显示每个分类器的标识。 7. 显示像:使用`plt.show()`函数,显示绘制好的ROC线像。 下面是一个简单的示例代码,其包含了绘制两条ROC线的基本步骤: ```python import matplotlib.pyplot as plt # 准备数据 classifier_1_tpr = [0.1, 0.2, 0.4, 0.6, 0.8] # 分类器1的TPR数据 classifier_1_fpr = [0.2, 0.3, 0.5, 0.7, 0.9] # 分类器1的FPR数据 classifier_2_tpr = [0.2, 0.3, 0.5, 0.7, 0.9] # 分类器2的TPR数据 classifier_2_fpr = [0.1, 0.2, 0.4, 0.6, 0.8] # 分类器2的FPR数据 # 创建像和子对象 fig, ax = plt.subplots() # 绘制线 ax.plot(classifier_1_fpr, classifier_1_tpr, label='Classifier 1') ax.plot(classifier_2_fpr, classifier_2_tpr, label='Classifier 2') # 添加标题和标签 ax.set(title='ROC Curve', xlabel='False Positive Rate', ylabel='True Positive Rate') # 设置例 ax.legend() # 显示像 plt.show() ``` 以上代码,我们首先准备了两个分类器的TPR和FPR数据,然后使用`ax.plot()`函数绘制了两条ROC线,接着用`ax.set()`函数设置了标题和标签,最后使用`ax.legend()`函数设置了例,最终使用`plt.show()`函数显示了绘制好的ROC线像。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值