python - 如何在 Pandas 中拟合/移动和测量 2 个时间序列的相似性?
问题描述
我有一个给定的信号given
和一个测量时间序列measured
。
给定信号最初处于另一个频率,我设法将其转换为正确的时间戳,但我被困在如何将信号与测量结果“匹配”并计算它们的“相似性”,我会使用动态时间扭曲或与np.correlate
这方面的相关性。
所以实际数据由大约 700k 个数据点组成。但是,我尝试使用以下方法以较小的规模复制数据:
df = pd.DataFrame({"measured": [20, 20, 9.8, 10.1, 4.8, 4.9, 9.7, 9.9, 2.9, 3.0, 3.1, 10.1, 10.0, 20, 20],
"given": [np.nan, 10, 10, 5, 5, 10, 10, 3, 3, 3, 10, 10,np.nan, np.nan, np.nan,]},
index=pd.date_range("2018-01-01", periods=15, freq="s"))
看起来像这样:
measured given
2018-01-01 00:00:00 20.0 NaN
2018-01-01 00:00:01 20.0 10.0
2018-01-01 00:00:02 9.8 10.0
2018-01-01 00:00:03 10.1 5.0
2018-01-01 00:00:04 4.8 5.0
2018-01-01 00:00:05 4.9 10.0
2018-01-01 00:00:06 9.7 10.0
2018-01-01 00:00:07 9.9 3.0
2018-01-01 00:00:08 2.9 3.0
2018-01-01 00:00:09 3.0 3.0
2018-01-01 00:00:10 3.1 10.0
2018-01-01 00:00:11 10.1 10.0
2018-01-01 00:00:12 10.0 NaN
2018-01-01 00:00:13 20.0 NaN
2018-01-01 00:00:14 20.0 NaN
我正在考虑计算它们的相似性和滞后性,并通过迭代解决它以找到最佳解决方案/最佳相似性。将如何实现这一点?
解决方案
您在此处查找的关键字是Dynamic Time Warping
. 这将匹配 2 个信号,而不受在同一时间戳上匹配它们的约束。创建的模块可以为您完成此操作,例如,Darts具有该实用程序以及有关如何实现它的教程。
推荐阅读
- devextreme - Devextreme dxdatagrid:如何在groupItems中获取组的最后一行数据作为页脚并计算groupItems的总和
- ios - 如何使用objective c以编程方式获取可用/已用内存使用情况
- reactjs - 我需要为我的 React 应用程序实现 OAuth。请有任何建议
- python - 检查是否将重复值添加到 mysql 表中
- windows - 当 UWP 文件夹被视为支持云时,该云到底在哪里?
- slurm - 使用 slurm 优化电网利用率
- docker-compose - kafka 控制中心 - 不在 localhost:9021 中收听不工作
- matlab - 三个变量f(x,y,z)的函数的4D平滑样条?
- r - wgcna goodSamplesGenes 关于基因太少的错误
- java - 如何注册可以被多个WAR共享的bean(Spring boot + Tomcat)