in src/main/java/com/twitter/sbf/core/MHAlgorithm.java [694:726]
public static PredictionStat clusterPrecision(
Graph graph,
SparseBinaryMatrix matrix,
int clusterId,
int numSamples,
RandomAdaptor rng) {
PredictionStat ret = new PredictionStat();
int[] colAsArray = matrix.getColumnAsArray(clusterId);
if (colAsArray.length > 0) {
for (int i = 0; i < numSamples;) {
int v1 = colAsArray[rng.nextInt(colAsArray.length)];
int v2 = colAsArray[rng.nextInt(colAsArray.length)];
if (v1 == v2) {
continue;
}
i++;
ret.incPredictedPositive();
float actualWeight = graph.getWeightOfEdge(v1, v2);
if (actualWeight > 0) {
ret.incWeightPredictedPositive(actualWeight);
ret.incTruePositive();
ret.incWeightTruePositive(actualWeight);
} else {
double add = (graph.getWeightedOutDegree(v1) + graph.getWeightedOutDegree(v2))
/ (graph.getDegree(v1) + graph.getDegree(v2));
ret.incWeightPredictedPositive(add);
}
}
}
return ret;
}