code: public double getMicroFMeasure()
      {
          int allTruePositives = 0;
          int allTruePositivesAndFalsePositives = 0;
          int allTruePositivesAndFalseNegatives = 0;
  
          for (String label : map.keySet()) {
              if (map.containsKey(label) && map.get(label).containsKey(label)) {
                  allTruePositives += this.map.get(label).get(label);
              }
              allTruePositivesAndFalsePositives += getColSum(label);
              allTruePositivesAndFalseNegatives += getRowSum(label);
          }
  
          double precision = (double) allTruePositives / (double) allTruePositivesAndFalsePositives;
          double recall = (double) allTruePositives / (double) allTruePositivesAndFalseNegatives;
  
          return (2.0 * precision * recall) / (precision + recall);
      }
docs: Micro-averaged F-measure gives equal weight to each document and is therefore
  considered as an average over all the document/category pairs. It tends to be
  dominated by the classifierâ€™s performance on common categories. (It's actually the accuracy).
  <p/>
  (from Ozgur et al., 2005. Text Categorization with Class-Based and Corpus-Based Keyword Selection.)
  
  @return double