0
我的熵計算方法幾乎每次都會返回正確的數字。但在少數情況下,如列表是{.3333, .3333, .3333, 0, 0}
這會返回1.584962500621156
,這是不正確的。在奇怪的情況下,我的熵計算方法返回的值大於1。有任何想法嗎?
這裏是我的熵計算器代碼:
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;
}
和我log2()
方法:
private static double log2 (double x) {
return (Math.log(x)/Math.log(2)+1e-10);
}
什麼是正確答案? –