Exemplo n.º 1
0
 /**
  * 获取所得到的k个最近邻元组的多数类
  *
  * @param pq 存储k个最近近邻元组的优先级队列
  * @return 多数类的名称
  */
 private String getMostClass(PriorityQueue<KNNNode> pq) {
   Map<Double, Integer> classCount = new HashMap<Double, Integer>();
   for (int i = 0; i < pq.size(); i++) {
     KNNNode node = pq.remove();
     double c = node.getC();
     if (classCount.containsKey(c)) {
       classCount.put(c, classCount.get(c) + 1);
     } else {
       classCount.put(c, 1);
     }
   }
   int maxIndex = -1;
   int maxCount = 0;
   Object[] classes = classCount.keySet().toArray();
   for (int i = 0; i < classes.length; i++) {
     if (classCount.get(classes[i]) > maxCount) {
       maxIndex = i;
       maxCount = classCount.get(classes[i]);
     }
   }
   return classes[maxIndex].toString();
 }