gpt4 book ai didi

algorithm - 有哪些快速的熵计算算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:01:27 26 4
gpt4 key购买 nike

private double log(double num, int base){
return Math.log(num)/Math.log(base);
}

public double entropy(List<String> data){

double entropy = 0.0;
double prob = 0.0;

if(this.iFrequency.getKeys().length==0){
this.setInterestedFrequency(data);
}


String[] keys = iFrequency.getKeys();

for(int i=0;i<keys.length;i++){

prob = iFrequency.getPct(keys[i]);
entropy = entropy - prob * log(prob,2);
}

iFrequency.clear();
return entropy;
}

我编写了一个函数来计算数据集的熵。该功能运行良好,数学计算正确。如果我处理的是小型数据集,一切都会好起来的,但问题是我正在使用此函数来计算具有数千或数万个成员的集合的熵,并且我的算法运行缓慢。

除了我正在使用的算法之外,是否还有其他算法可用于计算集合的熵?如果没有,是否可以向我的代码添加任何优化以使其运行得更快?

我找到了 this问题,但他们并没有真正深入细节。

最佳答案

首先,您似乎构建了一个复杂度为 O(N^2) 的算法,因为您在每次调用 getPct 时重新计算计数总和。我推荐两个操作:(1) 对计数求和一次 并存储值。手动计算 prob 作为 value[i]/sum。(2) 如果将熵计算为总和 prob * Math.log(prob),将会节省少量时间。当你全部完成后,将 一次 除以 Math.log(2)。

关于algorithm - 有哪些快速的熵计算算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34351098/

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