2016-07-19 8 views
1

Ich habe diese aktuelle Ausgabe:Wie berechnen insgesamt von HashMap Java

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 

dann für jede logVal Ich mag würde sie zum Beispiel auf insgesamt:
Die ersten Daten:

0 : 4, Probability: 0.8 , logVal: -0.2575424759098898 
1 : 1, Probability: 0.2 , logVal: -0.46438561897747244 

total[0] = (-0.2575424759098898) + (-0.46438561897747244) 

Weiter , für 2. Daten:

0 : 3, Probability: 0.6 , logVal: -0.44217935649972373 
1 : 2, Probability: 0.4 , logVal: -0.5287712379549449 

total[1] = (-0.44217935649972373) + (-0.5287712379549449) 

und so weiter bis zum letzten Daten. Aber ich bin nicht sicher, wie man den Index von jedem Daten erhält, damit jede Daten logVal zusammen mit HashMap zusammen sein kann.

Dies ist mein Code so weit:

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(); 

} 
+2

Was genau ist die Frage? –

+0

um die logVal für jede Daten zusammenzufassen. Ich konnte nicht die korrekte Summe erhalten, weil in HashMap kein Index vorhanden ist. Ich habe wie folgt aus: 0: 1, Wahrscheinlichkeit: ,3333333333333333, logVal: -0,5283208335737187 Total = -1,0566416671474375 1: 2, Wahrscheinlichkeit: ,6666666666666666, logVal: -,38997500048077083 Total = -,7799500009615417 aber ich brauche die logVal für Bit 0 zum Addieren mit logVal für Bit 1 – Ina

+0

Ihre Daten scheinen zweidimensional und abhängig vom Index (entsprechend Ihrer Frage) zu sein, so dass die Verwendung (nur) einer Karte nicht die beste Wahl ist. Warum nicht eine Liste oder dedizierte Objekte oder wenn Sie wirklich eine Liste von Listen oder sogar ein 2D-Array wollen? – Thomas

Antwort

0

Wechsel:

total = logVal + logVal; 
System.out.println("Total = " + total); 

von

String totalString = "(" + logVal + ") + (" + logVal ")"; 
System.out.println("Total = " + totalString); 

Wenn Sie es speichern müssen (Sie verwenden total[0] = ... nur String[] totals schrieb.