Я написал функцию для вычисления энтропии вектора, где каждый элемент представляет собой число элементов класса.Энтропия чистого расщепления с помощью NaN
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)
, как и в приведенном выше примере. Энтропия чистого раскола должна быть равна нулю.
Как решить проблему с минимальным воздействием на производительность, поскольку данные очень велики? Благодаря
Спасибо, но мне пришлось отредактировать его на 'res (isinf (res)) = 0', потому что log2 (0) = -inf. – Newbie
@ На самом деле, моя ошибка –