#每天进步一点点

昨天写了一个绘制折线图的代码:

import numpy as np
import matplotlib.pyplot as plt
from pylab import *
#导入数据
data = {
  'loss': [0.2183203399181366, 0.18074245750904083, 0.17447859048843384, 0.16980455815792084, 0.16634176671504974, 0.1638365387916565, 0.16195403039455414],
  'auc': [0.9504321813583374, 0.96815425157547, 0.9706228375434875, 0.9721706509590149, 0.9733114242553711, 0.9741286635398865, 0.9747750163078308],
  'precision': [0.8960466384887695, 0.8840448260307312, 0.8841691613197327, 0.8843715786933899, 0.8852525949478149, 0.8857887983322144, 0.8859798908233643],
  'recall': [0.7135917544364929, 0.7830625772476196, 0.793681263923645, 0.8037394881248474, 0.8100945949554443, 0.814582347869873, 0.817830502986908],
  'val_loss': [0.22454378008842468, 0.2253761887550354, 0.21944405138492584, 0.21664981544017792, 0.2185332030057907, 0.21595661342144012, 0.21363283693790436]
}
 #绘制召回率折线图
mpl.rcParams['font.sans-serif'] = ['SimHei']
y1 = data['recall']
y2 = data['val_recall']
x = range(1,len(y1)+1)
plt.ylim(0.7, 0.85)  # 限定纵轴的范围
plt.plot(x, y1, marker='o', mec='r', mfc='w',label=u'recall')
plt.plot(x, y2, marker='*', ms=10,label=u'val_recall')
plt.legend()  # 让图例生效
plt.margins(0)
plt.subplots_adjust(bottom=0.15)
plt.xlabel(u"轮数") #X轴标签
plt.title("召回率") #标题
plt.show()
#plt.savefig(r'C:\Users\86158\Desktop\召回率.png', dpi=300)#保存图片到桌面

#绘制精确率折线图
y3 = data['precision']
y4 = data['val_precision']
plt.plot(x, y3, marker='o', mec='r', mfc='w',label=u'recall')
plt.plot(x, y4, marker='*', ms=10,label=u'val_recall')
plt.ylim(0.86, 0.91)  # 限定纵轴的范围
plt.legend()  # 让图例生效
plt.margins(0)
plt.subplots_adjust(bottom=0.15)
plt.xlabel(u"轮数") #X轴标签
plt.title("精确率") #标题
plt.show()
#plt.savefig(r'C:\Users\86158\Desktop\精确率.png', dpi=300)#保存图片到桌面

#绘制auc折线图
y5 = data['auc']
y6 = data['val_auc']
plt.plot(x, y5, marker='o', mec='r', mfc='w',label=u'recall')
plt.plot(x, y6, marker='*', ms=10,label=u'val_recall')
plt.ylim(0.94, 0.98)  # 限定纵轴的范围
plt.legend()  # 让图例生效
plt.margins(0)
plt.subplots_adjust(bottom=0.15)
plt.xlabel(u"轮数") #X轴标签
plt.title("auc") #标题
plt.show()
#plt.savefig(r'C:\Users\86158\Desktop\auc.png', dpi=300)#保存图片到桌面

#绘制loss折线图
y7 = data['loss']
y8 = data['val_loss']
plt.plot(x, y7, marker='o', mec='r', mfc='w',label=u'recall')
plt.plot(x, y8, marker='*', ms=10,label=u'val_recall')
plt.ylim(0.15, 0.24)  # 限定纵轴的范围
plt.legend()  # 让图例生效
plt.margins(0)
plt.subplots_adjust(bottom=0.15)
plt.xlabel(u"轮数") #X轴标签
plt.title("loss") #标题
plt.show()
#plt.savefig(r'C:\Users\86158\Desktop\loss.png', dpi=300)#保存图片到桌面

作为初学者,简单四个图,代码写的冗长

大佬帮我改的更通用了一些:

def plot_metric(history, metric):
  train_metrics = history[metric]
  val_metrics = history['val_' + metric]
  epochs = range(1, len(train_metrics) + 1)
  plt.plot(epochs, train_metrics, 'bo--')
  plt.plot(epochs, val_metrics, 'ro-')
  plt.title('Train and valid ' + metric)
  plt.xlabel("Epochs")
  plt.ylabel(metric)
  plt.legend(["train_" + metric, 'val_' + metric])
  plt.show()


plot_metric(data, "loss")
plot_metric(data, "auc")
plot_metric(data, "precision")
plot_metric(data, "recall")

 考虑到数据安全的问题, 数据没有完全展示。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐