private double computeOverlap()

in samoa-api/src/main/java/org/apache/samoa/evaluation/measures/General.java [106:140]


  private double computeOverlap() {
    for (int c = 0; c < numFClusters; c++) {
      if (!(clustering.get(c) instanceof SphereCluster)) {
        System.out.println("Overlap only supports Sphere Cluster. Found: " + clustering.get(c).getClass());
        return Double.NaN;
      }
    }

    boolean[] overlap = new boolean[numFClusters];

    for (int c0 = 0; c0 < numFClusters; c0++) {
      if (overlap[c0])
        continue;
      SphereCluster s0 = (SphereCluster) clustering.get(c0);
      for (int c1 = c0; c1 < clustering.size(); c1++) {
        if (c1 == c0)
          continue;
        SphereCluster s1 = (SphereCluster) clustering.get(c1);
        if (s0.overlapRadiusDegree(s1) > 0) {
          overlap[c0] = overlap[c1] = true;
        }
      }
    }

    double totalOverlap = 0;
    for (int c0 = 0; c0 < numFClusters; c0++) {
      if (overlap[c0])
        totalOverlap++;
    }

    // if(totalOverlap/(double)numFClusters > .8) RunVisualizer.pause();
    if (numFClusters > 0)
      totalOverlap /= (double) numFClusters;
    return totalOverlap;
  }