package cc.mallet.cluster.evaluate; import cc.mallet.cluster.Clustering; /** * A list of {@link ClusteringEvaluators}. * * @author "Aron Culotta" <culotta@degas.cs.umass.edu> * @version 1.0 * @since 1.0 */ public class ClusteringEvaluators extends ClusteringEvaluator { ClusteringEvaluator[] evaluators; public ClusteringEvaluators (ClusteringEvaluator[] evaluators) { this.evaluators = evaluators; } /** * * @param truth * @param predicted * @return A String summarizing the evaluation metric. */ public String evaluate (Clustering truth, Clustering predicted) { String results = ""; for (int i = 0; i < evaluators.length; i++) { String name = evaluators[i].getClass().getName(); results += name.substring(name.lastIndexOf('.') + 1) + ": " + evaluators[i].evaluate(truth, predicted) + "\n"; } return results; } /** * * @return If the ClusteringEvaluator maintains state between calls * to evaluate, this method will return the total evaluation metric * since the first evaluation. */ public String evaluateTotals () { String results = ""; for (int i = 0; i < evaluators.length; i++) { String name = evaluators[i].getClass().getName(); results += name.substring(name.lastIndexOf('.') + 1) + ": " + evaluators[i].evaluateTotals() + "\n"; } return results; } public int size () { return evaluators.length; } @Override public double[] getEvaluationScores(Clustering truth, Clustering predicted) { throw new UnsupportedOperationException("Not yet implemented"); } }