我有这个当前输出:
First clusters: [[1, 0, 0, 0, 0], [1, 1, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 1], [0, 0, 0, 1, 1]]
0 : 4, Probability: 0.8 , logVal: -0.2575424759098898
1 : 1, Probability: 0.2 , logVal: -0.46438561897747244
0 : 3, Probability: 0.6 , logVal: -0.44217935649972373
1 : 2, Probability: 0.4 , logVal: -0.5287712379549449
0 : 5, Probability: 1.0 , logVal: 0.0
0 : 4, Probability: 0.8 , logVal: -0.2575424759098898
1 : 1, Probability: 0.2 , logVal: -0.46438561897747244
0 : 3, Probability: 0.6 , logVal: -0.44217935649972373
1 : 2, Probability: 0.4 , logVal: -0.5287712379549449
然后对于每个 logVal 我想对它们进行总计,例如:
第一个数据:
0 : 4, Probability: 0.8 , logVal: -0.2575424759098898
1 : 1, Probability: 0.2 , logVal: -0.46438561897747244
total[0] = (-0.2575424759098898) + (-0.46438561897747244)
接下来,对于第二个数据:
0 : 3, Probability: 0.6 , logVal: -0.44217935649972373
1 : 2, Probability: 0.4 , logVal: -0.5287712379549449
total[1] = (-0.44217935649972373) + (-0.5287712379549449)
依此类推,直到最后一个数据。但我不知道如何获取每个数据的索引,以便每个数据 logVal 可以使用 HashMap 汇总在一起。
这是我到目前为止的代码:
public static void printCount(HashMap<String, Integer> countMap, int length) {
double logVal = 0.0, entropy = 0.0, probability = 0.0;
Set<String> keySet = countMap.keySet();
for (String bit : keySet) {
//System.out.println(bit + " : " + countMap.get(bit));
probability = (double)countMap.get(bit)/length;
logVal = (probability*(Math.log(probability)/Math.log(2)));
System.out.println(bit + " : " + countMap.get(bit) + ", Probability: " + probability + " , logVal: " + logVal);
total = logVal + logVal;
System.out.println("Total = " + total);
}
System.out.println();
}
最佳答案
更改:
total = logVal + logVal;
System.out.println("Total = " + total);
由
String totalString = "(" + logVal + ") + (" + logVal ")";
System.out.println("Total = " + totalString);
如果您需要存储它(您编写了total[0] = ...
,只需使用String[]总计
。
关于java - 如何从 Hashmap Java 计算总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38456367/