Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaID3计算熵_Java_Id3 - Fatal编程技术网

JavaID3计算熵

JavaID3计算熵,java,id3,Java,Id3,我正在实现一个ID3,我发现熵有一些变化。以下两行是否相等?由于我需要将日志记录到基2,那么第二个日志是否默认将日志记录到基10 entropy += -probability * (Math.log(probability) / Math.log(2)); 及 Math.log() 您的第一行使用数学定律计算logbase 2:loga(x)=logb(x)/logb(a)。请参阅JavaDocs了解: 公共静态双日志10(双a) 返回双精度值的以10为底的对数。特殊情况: 如果参数为Na

我正在实现一个ID3,我发现熵有一些变化。以下两行是否相等?由于我需要将日志记录到基2,那么第二个日志是否默认将日志记录到基10

entropy += -probability * (Math.log(probability) / Math.log(2));

Math.log()

您的第一行使用数学定律计算logbase 2:loga(x)=logb(x)/logb(a)。

请参阅JavaDocs了解:

公共静态双日志10(双a)
返回双精度值的以10为底的对数。特殊情况:

  • 如果参数为NaN或小于零,则结果为NaN
  • 如果参数为正无穷大,则结果为正无穷大
  • 如果参数为正零或负零,则结果为负无穷大
  • 如果整数n的参数等于10n,则结果为n
计算结果必须在精确结果的1 ulp范围内。结果 必须是半单调的

参数: a-a值

返回: a的以10为底的对数

自: 1.5

“返回双精度值的以10为底的对数。”

您可以创建一个名为
log2()的静态方法

public static double log2(double n) {
    return Math.log(n) / Math.log(2);
}

第二个默认为log10。如果你想得到log2,第一个是正确的。如果需要,可以创建一个方法:
double log2(double n){return Math.log(n)/Math.log(2);}
public static double log2(double n) {
    return Math.log(n) / Math.log(2);
}