package storm.applications.util.math;
import java.util.List;
import java.util.Map;
public class Entropy {
public static double calculateEntropyHistogram(int totalCount, Map<Double, List<String>> histogram) {
double entropy = 0.0;
for(Map.Entry<Double, List<String>> entry : histogram.entrySet()) {
double prob = (double)entry.getValue().size() / totalCount;
entropy -= prob * log2(prob);
}
return entropy;
}
public static double calculateEntropyNormalDistribution(double sigma) {
if(sigma == 0) {
sigma = 0.000001;
}
return 0.5 * Math.log(2 * Math.PI * Math.E * Math.pow(sigma, 2));
}
private static double log2(double value) {
return Math.log(value) / Math.log(2);
}
}