time-series - ML.NET 对齐多个时间序列表
问题描述
我想每 5 分钟查看一次消耗的能量。我有两个能量计数器,它们生成具有不同时间戳的数据。
SolarPanel 的计数器值
约会时间 | 柜台 |
---|---|
2021-01-01 8:00:01 | 123.0 |
2021-01-01 8:01:00 | 123.1 |
2021-01-01 8:05:55 | 123.4 |
2021-01-01 8:09:02 | 125.3 |
2021-01-01 8:11:55 | 126.9 |
来自 EnergyProvider 的计数器值
约会时间 | 柜台 |
---|---|
2021-01-01 8:01:05 | 423.0 |
2021-01-01 8:01:22 | 427.5 |
2021-01-01 8:06:55 | 428.6 |
2021-01-01 8:09:33 | 431.8 |
2021-01-01 8:13:55 | 433.3 |
首先,我想重新采样数据,所以有相同的时间戳
能量提供者(重新计算)
约会时间 | 柜台 | 差异 |
---|---|---|
2021-01-01 8:05:00 | 123.3441 | |
2021-01-01 8:10:00 | 125.8364 | 2.4923 |
SolarPanel(重新计算)
约会时间 | 柜台 | 差异 |
---|---|---|
2021-01-01 8:05:00 | 427.7570 | |
2021-01-01 8:10:00 | 431.9546 | 4.1976 |
太阳能电池板在 8:05 和 8:10 之间产生的能量是 2.4923 Wh 在 8.05 和 8.10 之间从网络消耗的能量是 4.1976 Wh
消耗的总能量 = 6.69 Wh
ML.NET 中是否可以进行插值?是否有可用的 Diff 功能?两个表可以通过 DateTime 连接吗?
我用谷歌搜索了一整天,发现任何有用的东西,但没有运气。
解决方案
我不确定这是否真的是机器学习的问题。也许用于测量时间跨度和计算差异的简单算法会更合适。
您可以将数据放入 SQL DB 并使用存储过程,也可以直接使用您选择的语言进行操作:
步骤可能是:
为 SolarPanel 和 EnergyProvider 创建 DateTime 和 Double 类型的列表(或数组)并将您的数据添加到其中。
使用您希望序列开始的时间创建一个开始 DateTime 对象。
使用您的开始日期时间创建一个 DateTime 对象列表,并使用以下方法按时间跨度递增:
DateTime.AddMinutes(5)
然后迭代您的 SolarPanel 和 EnergyProvider 列表,并在步骤 3 中创建的列表中的连续项目中找到值的索引这可以执行如下操作:
for(int i=0; i<myTimeSeqeunce.Length; i++) { TimeSpan varTime = solarPanelDT[i] - myTimeSequence[i]; int intMinutes = (int)varTime.TotalMinutes; }
用于
i
在您的 solarPanel 和 EnergyProvider 列表中查找相关值,然后计算它们之和的差值。现在应该有您想要的时间序列和相应的总和和差异的列表。
推荐阅读
- javascript - 初始值 dropdownlist Knockout
- mysql - 使用 Group By 计数和过滤;和行到列的转换
- javascript - 从文本输入中删除重复的字符
- c++ - IOPCShutdown::Advise 失败:错误 80040202
- typescript - 模块 '"../node_modules/@types/d3"' 没有导出的成员 'event'
- package-lock.json - 如何在 build.gradle 中排除 package-lock.json 中可用的依赖项或模块以摆脱漏洞
- c++ - Cpp 中的模板实现没有合适的默认构造函数
- java - 将 .txt 文件中的每一行与 Java 中的数组字符串进行比较
- kubernetes - 如何在无头服务上使用 Traefik IngressRoute
- unity3d - 如何在 Unity 中制作具有颜色变化的动画?