纯劈裂成NaN的熵

时间:2015-05-29 16:39:27

标签: matlab decision-tree entropy

我编写了一个函数来计算向量的熵,其中每个元素代表一个类的元素数。

function x = Entropy(a)
    t = sum(a);
    t = repmat(t, [1, size(a, 2)]);
    x = sum(-a./t .* log2(a./t));
end

例如:a = [4 0],然后是entropy = -(0/4)*log2(0/4) - (4/4)*log2(4/4)

但对于上述函数,由于NaN,当分割为纯时,熵为log2(0),如上例所示。纯拆分的熵应为零。

如果数据非常大,我应该如何解决问题,对性能的影响最小?感谢

1 个答案:

答案 0 :(得分:1)

我建议你创建自己的log2函数

function res=mylog2(a)
   res=log2(a);
   res(isinf(res))=0;
end

此函数在打破log2行为时可以在您的特定示例中使用,因为您将结果与日志内部相乘,从而使其为零。它不是“数学上正确的”,但我相信这就是你要找的东西。