Java 我的熵计算方法是在奇怪的情况下返回大于1的值。有什么想法吗?
我的熵计算方法几乎每次都返回正确的数字。但是在一些情况下,例如如果列表是Java 我的熵计算方法是在奇怪的情况下返回大于1的值。有什么想法吗?,java,Java,我的熵计算方法几乎每次都返回正确的数字。但是在一些情况下,例如如果列表是{.3333.3333.3333.3333,0,0}则返回1.584962500621156,这是不正确的 以下是我的熵计算器的代码: private double calcEntropySimple(double[] list){ // Calculate entropy double entropy = 0; for (int i = 0; i < list.length; i++) {
{.3333.3333.3333.3333,0,0}
则返回1.584962500621156
,这是不正确的
以下是我的熵计算器的代码:
private double calcEntropySimple(double[] list){
// Calculate entropy
double entropy = 0;
for (int i = 0; i < list.length; i++) {
if(Double.isNaN(list[i])){
list[i] = 0;
}
if (list[i] > 0) {
entropy -= list[i] * log2(list[i]);
}
}
return entropy;
}
考虑
let a = log2(.3333) --> -1.5851
let b = a * .3333 --> -0.5823
0 - b - b - b - 0 - 0 = 1.584962500621156
因此,看起来您的代码正按照您的要求执行。请考虑
let a = log2(.3333) --> -1.5851
let b = a * .3333 --> -0.5823
0 - b - b - b - 0 - 0 = 1.584962500621156
因此,看起来您的代码正按照您的要求执行。什么是正确答案?什么是正确答案?我想您是对的。我一定是计算熵错了,虽然我是从教科书上取的公式。我想你是对的。我一定是计算熵错了,虽然我是从教科书上取的公式。