iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python绘制lost损失曲线加方差范围的操作方法
  • 310
分享到

python绘制lost损失曲线加方差范围的操作方法

2024-04-02 19:04:59 310人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

1. 导入必要的包 我使用了seaborn,通过sns.set_style可以让绘制出来的图更漂亮,而且可以切换不同的类型 import re import seaborn as

1. 导入必要的包

我使用了seaborn,通过sns.set_style可以让绘制出来的图更漂亮,而且可以切换不同的类型


import re
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import shutil
import os
sns.set_style('whitegrid')

2. 数据的获取(可跳过此步)

       我用的数据是通过深度强化得到的回报曲线。数据结构如下所示,我所需要的是从train开始的部分,分别对应总的回报,平均回报和回报的方差。我采用了re.findall的正则表达式去提取我所需要的数据,具体的操作方式可以查看源码

10-15 22:23:15 DATA/traffic DEBUG     train 0 totalreward : -99477.0 ReturnAvg : -102.55360824742269 ReturnStd : 34.34301970480272
10-15 22:23:29 DATA/traffic DEBUG     train 1 totalreward : -83131.0 ReturnAvg : -85.70206185567011 ReturnStd : 53.442993000985545


file_path = 'log.txt'
content = []
with open(file_path, 'r') as f:
    for line in f.readlines():
        line = line.strip('\n')
        content.append(line)
iter = []
totalreward = []
returnavg = []
returnstd = []
for line in content:
    str1 = re.findall('train.+', line)
    v = [float(x) for x in re.findall('-?\d+.?\d+|\d+', str1[0])]
    iter.append(v[0])
    totalreward.append(v[1])
    returnavg.append(v[2])
    returnstd.append(v[3])

3. 回报绘制

      直接将图像保存到Plot的文件夹,这里保存不了jpg格式,一直保存,最后将其保存为png格式成功。设置分辨率为1000,其实差不多,只是线更清楚了。


color = cm.viridis(0.5)
f, ax = plt.subplots(1,1)
ax.plot(iter, totalreward, color=color)
ax.legend()
ax.set_xlabel('Iteration')
ax.set_ylabel('Return')
exp_dir = 'Plot/'
if not os.path.exists(exp_dir):
    os.makedirs(exp_dir, exist_ok=True)
else:
    os.makedirs(exp_dir, exist_ok=True)
f.savefig(os.path.join('Plot', 'reward' + '.png'), dpi=1000)

       曲线如下图,可通过plt.show()显示出来,或者直接在console输入f并回车

4.含有方差的平均回报绘制

    在强化学习的论文中,我们经常看到一条收敛线,周围还有浅浅的范围线,那些范围线就是方差。绘制代码如下,主要包含了fill_between.


color = cm.viridis(0.7)
f, ax = plt.subplots(1,1)
ax.plot(iter, returnavg, color=color)
r1 = list(map(lambda x: x[0]-x[1], zip(returnavg, returnstd)))
r2 = list(map(lambda x: x[0]+x[1], zip(returnavg, returnstd)))
ax.fill_between(iter, r1, r2, color=color, alpha=0.2)
ax.legend()
ax.set_xlabel('Iteration')
ax.set_ylabel('Return')
exp_dir = 'Plot/'
if not os.path.exists(exp_dir):
    os.makedirs(exp_dir, exist_ok=True)
f.savefig(os.path.join('Plot', 'avgreward' + '.png'), dpi=50)

结果如下

可以看到深绿色上下包裹着浅绿色的线,这就是fill_between的作用,其中可以调节alpha来改变颜色深度。

到此这篇关于python绘制lost损失曲线加方差范围的文章就介绍到这了,更多相关Python损失曲线 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python绘制lost损失曲线加方差范围的操作方法

本文链接: https://www.lsjlt.com/news/137602.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python绘制lost损失曲线加方差范围的操作方法
    1. 导入必要的包 我使用了seaborn,通过sns.set_style可以让绘制出来的图更漂亮,而且可以切换不同的类型 import re import seaborn as...
    99+
    2024-04-02
  • Python+NumPy绘制常见曲线的方法详解
    目录一、利萨茹曲线二、计算斐波那契数列三、方波四、锯齿波和三角波在NumPy中,所有的标准三角函数如sin、cos、tan等均有对应的通用函数。 一、利萨茹曲线 (Lissajous...
    99+
    2024-04-02
  • Python取日期范围循环操作的两种方法
    今天在用Python跑一个数据时,需要遍历一个日期范围,于是在网上找到如下可用的代码,记录一下。 方法1: import datetime def main():     begin = datetime.date(2014,6,...
    99+
    2023-01-31
    两种 日期 操作
  • 使用Python 操作 xmind 绘制思维导图的详细方法
    思维导图 思维导图:思维导图又叫心智导图是表达发散性思维的有效的图形思维工具,它简单却又很有效,是一种革命性的思维工具。思维导图运用图文并重的技巧,把各级主题的关系用相互隶属与相关的...
    99+
    2024-04-02
  • Python操作xmind文件实现思维导图绘制的方法是什么
    这篇文章主要讲解了“Python操作xmind文件实现思维导图绘制的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python操作xmind文件实现思维导图绘制的方法是什么”吧!思...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作