package tr.gov.ulakbim.jDenetX.evaluation;
import tr.gov.ulakbim.jDenetX.cluster.Clustering;
import tr.gov.ulakbim.jDenetX.gui.visualization.DataPoint;
import java.util.ArrayList;
/**
* @author jansen
*/
public class SSQ extends MeasureCollection {
private static final long serialVersionUID = 1L;
public SSQ() {
super();
}
@Override
public String[] getNames() {
String[] names = {"SSQ"};
return names;
}
public void evaluateClustering(Clustering clustering, Clustering trueClsutering, ArrayList<DataPoint> points) {
double sum = 0.0;
for (int p = 0; p < points.size(); p++) {
//don't include noise
if (points.get(p).classValue() == -1) continue;
double minDistance = Double.MAX_VALUE;
int closest_cluster = -1;
for (int c = 0; c < clustering.size(); c++) {
double distance = 0.0;
double[] center = clustering.get(c).getCenter();
for (int i = 0; i < center.length; i++) {
double d = points.get(p).value(i) - center[i];
distance += d * d;
closest_cluster = c;
}
minDistance = Math.min(distance, minDistance);
}
//points.get(p).setSSQvalues(minDistance, closest_cluster);
sum += minDistance;
}
addValue(0, sum);
}
@Override
protected boolean[] getDefaultEnabled() {
boolean[] defaults = {false};
return defaults;
}
}