gpt4 book ai didi

node.js - 按键下划线聚合哈希

转载 作者:行者123 更新时间:2023-11-30 09:01:59 26 4
gpt4 key购买 nike

我从事机器学习应用程序的工作。当我需要操作数组和哈希时,我使用 underscorejs。

问题如下,在ML中有一个cross-validation当您需要计算几倍的性能时,使用这种方法。

对于每个折叠,我都有一个性能参数的哈希值,如下所示

{ 'F1': 0.8,
'Precision': 0.7,
'Recall':0.9
}

我将所有哈希值推送到数组,最后我有一个哈希值数组,如下所示

[  { 'F1': 0.8,
'Precision': 0.7,
'Recall':0.9
},
{ 'F1': 0.5,
'Precision': 0.6,
'Recall':0.4
},
{ 'F1': 0.4,
'Precision': 0.3,
'Recall':0.4
}
]

问题是,最后我想计算散列的每个参数的平均值,即我想按参数对所有散列求和,然后将每个参数除以折叠数,在我的例子中为 3。

是否有任何优雅的方法可以使用下划线和 JavaScript 来做到这一点?

一个重要的一点是,有时我需要进行这种聚合,当折叠的哈希如下所示时

{
label1:{ 'F1': 0.8,
'Precision': 0.7,
'Recall':0.9
},
label2:{ 'F1': 0.8,
'Precision': 0.7,
'Recall':0.9
},
...
}

任务是相同的,所有折叠中每个标签的 F1、精度、召回率的平均值。

目前我有一些丑陋的解决方案,多次运行所有哈希,我将不胜感激任何帮助,谢谢。

最佳答案

如果是数组,就直接使用数组即可。如果它不是数组,请使用 _.values 将其转换为数组并使用它。然后,我们可以对数据进行折叠(或reduce):

_.reduce(data, function(memo, obj) {
return {
F1: memo.F1 + obj.F1,
Precision: memo.Precision + obj.Precision,
Recall: memo.Recall + obj.Recall,
count: memo.count + 1
};
}, {F1: 0, Precision: 0, Recall: 0, count: 0})

这将返回一个包含 F1PrecisionRecall(它们是总和)和 count 的哈希值,这是对象的数量。从这些中获得平均值应该很容易。

关于node.js - 按键下划线聚合哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22721246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com