【发布时间】:2022-01-21 23:24:03
【问题描述】:
我正在使用 matplotlib 绘制训练神经网络的结果。
我成功地使用make_interp_spline 在给定的 x 轴 50(纪元)上绘制了我的结果。¹
当然,x 和 y 的大小相同(都有 9 个值),所以我很容易绘制它们。现在,我必须在同一个图上显示多个结果,因此我需要在 x 轴上使用不同的值,因为某些结果基于值(Epoch - 这是我的 x 轴)> 50(例如 60, 70 等)。
我尝试初始化一个大于 50 的 linspace,它可以工作,但结果以指数方式上升。² 有没有办法从 x = 50 开始“删除”点?
另外,如果我在 x 轴上添加值,python 会抛出一个错误:
ValueError: Shapes of x (14,) and y (10,) are incompatible
我将把我所取得的成就留到现在。
import matplotlib.pyplot as plt
import numpy as np
from scipy.interpolate import make_interp_spline
listA = [0.00,25.98386517667222,36.10066770794748,
31.70895801412648,29.430944916297648,
27.164039966977874,30.26995937742036,
29.23696275469900,28.11570993620774,
28.608378364299906]
epochList = [0, 10, 15, 20, 25, 30, 35, 40, 45, 50]
xnew = np.linspace(0, 50, 100)
spl_A = make_interp_spline(epochList, listA, k=3)
plt.figure(figsize=(15,15))
plt.plot(xnew, spl_A(xnew), label='A')
plt.scatter(epochList,listA)
plt.xlabel('Epochs')
plt.xticks(np.arange(min(epochList), max(epochList)+1, 5.0))
plt.ylabel('MAE')
plt.yticks(np.arange(0, 62, 5.0))
del listA[0]
plt.scatter(epochList[listA.index(min(listA))+1], min(listA), label=F'Best MAE = {min(listA)}', s=200, marker='*', c='black')
plt.legend(loc='upper right', prop={'size': 14})
plt.grid()
plt.show()
【问题讨论】:
-
第二张图的代码是什么?
-
只需将
xnew = np.linspace(0, **50**, 100)编辑为xnew = np.linspace(0, **70**, 100)。
标签: python matplotlib plot scipy