algorithm - 可变时间窗口中的平均值的平均值
问题描述
语境:
- 活动有等级
- 活动属于一个主题,subject_avg只是它在确定的时间范围内的活动成绩的平均值
- global_avg是许多subject_avg的平均值(即不要与所有活动成绩的平均值混淆)
问题:
- 在可变时间窗口中“有效地”计算global_avg
通过累积其活动的数量和等级, “有效地”计算单个主题的subject_avg :
日期 | 年级 | |
---|---|---|
第一幕 | 第 1 天 | 0.5 |
第二幕 | 第 3 天 | 1 |
第三幕 | 第 3 天 | 0.8 |
第四幕 | 第 6 天 | 0.6 |
第五幕 | 第 6 天 | 0 |
avg_sum | 活动计数 | |
---|---|---|
第 1 天 | 0.5 | 1 |
第 3 天 | 2.3 | 3 |
第 6 天 | 2.6 | 5 |
我称之为“有效”,因为如果我需要在任何两个日期之间的subject_avg,我可以通过第二个表的简单算术获得它:
subject_avg (day 2 to 5) = (2.3 - 0.5) / (3 - 1) = 0.6
计算global_avg:
科目A
avg_sum | 活动计数 | |
---|---|---|
第 1 天 | 0.5 | 1 |
第 3 天 | 2.3 | 3 |
第 6 天 | 2.6 | 5 |
科目B
avg_sum | 活动计数 | |
---|---|---|
第 4 天 | 0.8 | 1 |
第 6 天 | 1.8 | 2 |
global_avg (day 2 to 5) = (subjectA_avg + subjectB_avg)/2 = (0.6 + 0.8) / 2 = 0.7
我有数百个主题,所以我现在需要:有什么方法可以预处理subject_avgs以便我不需要在计算global_avg之前单独计算给定时间窗口中的平均值?
解决方案
推荐阅读
- php - FPDF 多单元格对齐
- embedded - 如何在 gsm 调制解调器通信中使用 nanopb,其中特定字符(如 CTRL+Z)用作 AT 命令中的 msg 终止?
- javascript - 在 Angular 8 的表单数组中使用表单数组
- android - 在 RecyclerView firestore 中发布喜欢的用户
- android - 如何解决:无法解决:com.google.firebase:firebase-messaging:20.1.0
- c++ - C++ :: 安全地使用 reinterpret_cast 生成“包装器”迭代器
- tcpdf - 将 TCPDF 文档设置为 INFINITE 高度以模拟打印到标签卷纸
- .net - .NET 不显眼的验证自定义日期范围属性显示错误的日期,除非应用程序池被回收
- cassandra - 过滤条件不适用于 ScyllaDB 中的计数器列,它在 Cassandra 3.0 中有效
- html - 无法使用媒体查询将 1/6 css 网格调整为 2 /2 css 网格