可视化工具:制作在时间序列上移动的滑动窗口的视频

数据挖掘 Python 神经网络 可视化 朱庇特 蟒蛇
2022-02-18 23:54:10

我有一个神经网络(一个自动编码器),它从长度为 ( )M的时间序列中获取长度为时间窗口的输入,并将其转换为另一个相同维度的时间窗口。NM << N

为了可视化,我想制作一个视频,在帧的顶部显示 NN 的输入,在帧的底部显示相应的输出,在连续的窗口上运行 NN。

我想知道您是否可以向我介绍一些工具或给我一些提示。

1个回答

使用这个,我为它写了一个脚本。

%matplotlib notebook

import numpy as np
import matplotlib.pyplot as plt
import time

plt.ion() 
size_x = 128
def pltts(ts1, ts2, ax, colors, lbl):
    x = np.linspace(0,2.5,size_x)
    if ax.lines:
        ax.lines[0].set_xdata(x)
        ax.lines[1].set_xdata(x)

        ax.lines[0].set_ydata(ts1)
        ax.lines[1].set_ydata(ts2)
    else:
        l1, l2 = ax.plot(x, ts1, colors[0], x, ts2, colors[1])
        fig.legend((l1, l2), ("BLUE", "RED"), loc='center', fontsize=fnt_siz-2)
        ax.set_title(lbl, fontsize=fnt_siz-2)
    fig.canvas.draw()

fnt_siz = 16

fig,ax = plt.subplots(2,1, figsize=(10,10))
fig.suptitle('Data', fontsize=fnt_siz)
ax[0].set_xlabel('Time', fontsize=fnt_siz-4)
ax[0].set_ylabel('Magnitude', fontsize=fnt_siz-4)
ax[1].set_xlabel('Time', fontsize=fnt_siz-4)
ax[1].set_ylabel('Magnitude', fontsize=fnt_siz-4)
plt.subplots_adjust(hspace=0.75)
# ax[0].grid(True)
# ax[1].grid(True)
for f in range(50):
    ts1 = np.random.normal(0, 4, size=(size_x,1))
    ts2 = np.random.normal(1, 1, size=(size_x,1))
    pltts(ts1, ts2, ax[0], ['b', 'r'], "ORGINAL")
    ts1 = 2*ts1
    ts2 = -3*ts2
    pltts(ts1, ts2, ax[1], ['b', 'r'], "TRANSFORMED")
    time.sleep(1)

这是一个示例输出:

在此处输入图像描述