/** * calculate the dunn index between two clusters * * @param clusters clusters * @param dataset dataset * @return dunn index */ public double calculateDunnIndex() { double minDI = Double.MAX_VALUE; for (int i = 0; i < clusters.size(); i++) { Cluster ci = clusters.get(i); if (!ci.getIsActive()) continue; if (ci.getPointsIDs().size() < 30) continue; for (int j = 0; j < clusters.size(); j++) { Cluster cj = clusters.get(j); if (ci.getID() == cj.getID() || !cj.getIsActive()) continue; if (cj.getPointsIDs().size() < 30) continue; double minDistBetCiCj = calculateMinDistanceBetweenTwoClusters(ci, cj); double DIij = minDistBetCiCj / this.maxClusterSize; if (DIij < minDI) { minDI = DIij; } } } return minDI; }