我有一个数据集,可以在以下链接中找到:
https://drive.google.com/open?id=0B2Iv8dfU4fTUSV8wMmUwVGMyRE0
对estimated_data.csv
文件进行简单绘图会生成以下图表。
并且对实际数据actual_data.csv
(我的基准)进行简单绘图会生成以下图表
当我们将实际信号和估计信号一起绘制时,得到的结果如下
我想要找到估计信号和实际信号的最接近模式。 我尝试使用pandas.rolling_max()
通过将数据加载到DataFrame
中并计算滚动最大值来查找最接近模式,然后翻转整个系列并向后计算窗口。下面是我的Python
脚本。
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
plt.ion()
df = pd.read_csv('estimated.csv', names=('x','y'))
df['rolling_max'] = df['y'].rolling(8500).max()
df['rolling_max_backwards'] = df['y'][::-1].rolling(850).max()
df.rolling_max.fillna(df.rolling_max_backwards, inplace=True)
plt.figure()
plt.plot(df['x'], df['rolling_max'], label = 'rolling')
plt.legend()
plt.title('Pattern')
plt.xlim(0,10)
plt.ylim(0,700)
plt.xlabel('Time [Seconds]')
plt.ylabel('Segments')
plt.grid()
plt.show(block=True)
最终生成以下图案。
然而,当我将其与我的实际数据(actual_data.csv
的图)进行比较时,感觉这个图案还不够接近。我们如何应用过滤模型(例如Kalman Filter
)来找到这样一个信号的图案?