使用空的 Boost 累加器
我很好奇,从这段代码片段中获得的平均值是多少?累加器应为空。
boost::accumulators::accumulator_set<
int,
boost::accumulators::features<boost::accumulators::tag::mean>
> Accumulator;
int Mean = boost::accumulators::mean(Accumulator);
当我测试它时,平均值不为零。有什么方法可以告诉我平均值是针对空数据集得出的吗?为什么“平均值”的结果值不为零?
我正在查看累加器库的文档,但无法找到这个问题的答案。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
任何值都是空值集的有效平均值。即
x * 0 = 0
对于任何x
都成立。您可以将
count
功能添加到您的accumulator_set
中,并查询它以查看其是否为 0。Any value would be a valid mean for an empty set of values. That is
x * 0 = 0
holds for anyx
.You could add a
count
feature to youraccumulator_set
and query it to see if its 0.您不需要添加 count 功能,因为 mean 累加器基于来自
count 和 sum 累加器href="https://www.boost.org/doc/libs/1_55_0/doc/html/accumulators/user_s_guide.html" rel="nofollow noreferrer">Boost 用户指南:
所以你只需要验证计数是否大于 0:
You don't need to add count feature since mean accumulator is based on count and sum accumulators
from boost User's Guide:
so you just need to validate that count is bigger then 0: