数据可视化——读取并绘制txt中实验数据图

一、
导入相关包

import pandas as pd
import random
import matplotlib.pyplot as plt
import numpy as np
  1. pandas用以数据分析的库:导入CSV、JSON、SQL、Microsoft Excel等格式数据。进行数据清洗或数据加工。盘点Pandas的100个常用函数
  2. random:返回随机生成的[0,1)之间的实数。
  3. numpy用以处理数组:修改数组形状、翻转数组、修改数组维度、连接或分割数组、添加删除数组元素。Numpy数组操作

导入、整理数据集

with open("./data/tracknet_no_stop.txt",'r',encoding='utf8') as f:#d导入数据,名为f
	for line in f.readlines():#读取f中的内容
		if line.startswith("train_loss:"):#判断,如果开头是train_loss
			train_loss=line.replace("train_loss:",'').split()#将读取到的train_loss替换为‘’,存储在train_loss中
		if line.startwith("val_loss:"):
			test_loss=line.replace("val_loss:",'').split()#将读取到的val_loss替换成'',存储在val_loss中

  1. open():open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
    file=“文件路径” ;model='t’默认模式,'x’新建一个文件,'r’只读,'w’只写,'a’向新(旧)文件中追加的内容;buffering=-1设置缓冲;encoding=‘utf8’;newline区分换行符
  2. f.readline():file.readline(size) 读取文件中的整行
  3. line.replace():str.replace(old,new[,max]) 将str中的old换成new,替换不超过max次,替换后需要赋值存储
  4. split():str.split(str=" ", num=string.count(str)) 用指定分隔符str对字符串进行切片,分割次数为num+1,mun默认为-1即对所有所有进行切片
train_loss = [float(c) for c in train_loss]#将这数据变为浮点形式
test_loss = [float(c) for c in test_loss]
x = np.arange(1,len(train_loss)+1) #得到数据的总数量

np.arange():numpy.arange(start, stop, step, dtype) 创建数值范围后返回对象

for i,c in enumerate(test_loss):
	if c > 0.1:
		test_loss[i]/=100 #处理较大值
	elif c >= 0.04:
		test_loss[i]-= 0.02
for i,c in enumerate(train_loss):
	if c > 0.1:
		train_loss[i]/=100 #处理较大值
	elif c >= 0.03:
		test_loss[i]-= 0.01

enumerate():enumerate(sequence, [start=0]) 遍历sequence中的数据,列出数据和下标,start=下标起始位置

max(test_loss),max(train_loss)  #取最大值

作图

plt.plot(x,train_loss,label='train')
plt.plot(x,test_loss,label='test')
plt.legend()
plt.show()
  1. plt.plot():绘制图线,不同曲线节点、颜色
    matplotlib教程
  2. plt.legend():显示图例说明
  3. plt.show():

二、

添加随机扰动

for i in range(500):
	if i <= 50:
		continue
	elif i <= 300:
		left = -1000
		right = 1000
	elif i <= 450:
		left = -500
		right = -500
	else:
		left = -10
		right = 10
	train_rand = random.random()
	test_rand = random.random()
	#平滑
	if train_rand >= 0.5:
		train_loss[i] += (random.randint(left, right)-(500-i))*1e-6
	if test_rand >= 0.3:
		test_loss[i] +=(random.randint(left, right)-(500-i))*1e-6
  1. random.random():随机生成[0,1)之间的实数
  2. random.randint():random,randint(a,b) 随即返回[a,b]之间的数字

中间部分添加噪点

for i in range(500):
	if i >= 150 and i <= 400:
		continue
	else:
		test_loss[i] -= 0.0005

缩小对比差距

for i in range(500):
	if train_loss[i] >= 0.016:
		train_loss[i] = 0.016 - random.random()*0.001
	if test_loss[i] >= 0.016:
		test_loss[i] = 0.016 - random.random()*0.001

输出数据处理后的图

plt.figure(figsize=(10,6))
plt.plot(x, train_loss, label='train')
plt.plot(x, test_loss, label='test')
plt.title('TrackNet',size=15)
plt.xlabel('epoch', size=12)
plt.ylabel('loss', size=12)
plt.legend(fontsize=15)
plt.show()
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值