gpt4 book ai didi

typescript - Typescript 中数组的香农熵

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

我正在尝试查找Shannon entropy在 typescript 中:

到目前为止我的代码:

val =[0.5035203893575573, 0.4964796106424427]

shannonEntropy(val){
let temp, temp2;

temp = -(val[0] * Math.log(val[0]))
temp2 = -(val[1] * Math.log(val[1]))
return temp+temp2;


}

它返回0.693122394072697;它应该返回 0.999964

我做错了什么?

最佳答案

啊,你的问题是你需要使用base 2 logarithm的数字而不是 natural logarithm 。自 ES2015 起,JavaScript 具有内置函数 Math.log2() 您可以使用:

const val =[0.5035203893575573, 0.4964796106424427]

const shannonEntropy = (val: number[]) =>
val.map(v => -v * Math.log2(v)).reduce((x, y) => x + y, 0);

console.log(shannonEntropy(val)); // 0.9999642406577658

或者,如果您需要保持 ES5 兼容,您可以使用自然对数并将结果乘以 Math.LOG2E :

const val =[0.5035203893575573, 0.4964796106424427]

const shannonEntropy = (val: number[]) =>
val.map(v => -v * Math.log(v)).reduce((x, y) => x + y, 0)*Math.LOG2E;

console.log(shannonEntropy(val)); // 0.9999642406577659

正如您所看到的,这本质上是相同的事情(任何差异都只是由于数值精度问题造成的)。

希望有帮助;祝你好运!

关于typescript - Typescript 中数组的香农熵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51105055/

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