in samoa-api/src/main/java/org/apache/samoa/evaluation/measures/CMM_GTAnalysis.java [328:375]
private void calculateClusterConnection(int otherCid, boolean initial) {
double avgConnection = 0;
if (workclass == otherCid) {
avgConnection = 1;
}
else {
AutoExpandVector<Double> kmax = new AutoExpandVector<Double>();
AutoExpandVector<Integer> kmaxIndexes = new AutoExpandVector<Integer>();
for (int p : points) {
CMMPoint cmdp = cmmpoints.get(p);
double con_p_Cj = getConnectionValue(cmmpoints.get(p), otherCid);
double connection = cmdp.connectivity * con_p_Cj;
if (initial) {
cmdp.p.setMeasureValue("Connection to C" + otherCid, con_p_Cj);
}
// connection
if (kmax.size() < clusterConnectionMaxPoints || connection > kmax.get(kmax.size() - 1)) {
int index = 0;
while (index < kmax.size() && connection < kmax.get(index)) {
index++;
}
kmax.add(index, connection);
kmaxIndexes.add(index, p);
if (kmax.size() > clusterConnectionMaxPoints) {
kmax.remove(kmax.size() - 1);
kmaxIndexes.add(kmaxIndexes.size() - 1);
}
}
}
// connection
for (int k = 0; k < kmax.size(); k++) {
avgConnection += kmax.get(k);
}
avgConnection /= kmax.size();
}
if (otherCid < connections.size()) {
connections.set(otherCid, avgConnection);
}
else if (connections.size() == otherCid) {
connections.add(avgConnection);
}
else
System.out.println("Something is going really wrong with the connection listing!" + knnNeighbourhood + " "
+ tauConnection);
}