Я написал функцию для вычисления энтропии вектора, где каждый элемент представляет количество элементов класса.
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)
, как в приведенном выше примере. Энтропия чистого расщепления должна быть равна нулю.
Как мне решить проблему с наименьшим влиянием на производительность, поскольку данные очень велики? Спасибо