我运行了超过百万个元素的聚类。
然后,我想计算Rand Index来评估生成的集群。
我编写以下代码,但需要很长时间。
int TP = 0;
int TN = 0;
int count = 0;
double randIndex = 0;
for (int i = 0; i < elements.size() - 1; i++) {
count++;
for (int j = i; j < elements.size(); j++) {
if (clusters.get(elements.get(i)) == clusters.get(elements.get(j)) && classes.get(elements.get(i)).equals(classes.get(elements.get(j)))) {
TP++;
} else if (clusters.get(elements.get(i)) != clusters.get(elements.get(j)) && classes.get(elements.get(i).equals(classes.get(elements.get(j))) == false) {
TN++;
}
}
}
randIndex = ((double) TP + (double) TN) / (double) count;
System.out.println("rand index" + randIndex);
在代码中,HashMap clusters
和classes
返回给定元素所属的类的ID或名称。
有没有更好的方法来加快兰德指数的计算?