package weka.clusterers.metriclearners;
import java.util.*;
import weka.core.*;
import weka.core.metrics.*;
import weka.clusterers.MPCKMeans;
import weka.clusterers.InstancePair;
public class FakeGDLearner extends GDMetricLearner {
public boolean trainMetric(int clusterIdx) throws Exception {
Init(clusterIdx);
int violatedConstraints = 0;
for (int instIdx = 0; instIdx < m_instances.numInstances(); instIdx++) {
int assignment = m_clusterAssignments[instIdx];
if (assignment == clusterIdx || clusterIdx == -1) {
Object list = m_instanceConstraintMap.get(new Integer(instIdx));
if (list != null) {
ArrayList constraintList = (ArrayList) list;
for (int i = 0; i < constraintList.size(); i++) {
InstancePair pair = (InstancePair) constraintList.get(i);
int firstIdx = pair.first;
int secondIdx = pair.second;
int otherIdx = (firstIdx == instIdx) ?
m_clusterAssignments[secondIdx] : m_clusterAssignments[firstIdx];
if (otherIdx != -1) violatedConstraints++;
}
}
}
}
System.out.println(" Cosine: Total constraints violated: " + violatedConstraints/2);
return true;
}
public String [] getOptions() {
String [] options = new String [20];
int current = 0;
options[current++] = "-E";
options[current++] = "" + m_eta;
options[current++] = "-D";
options[current++] = "" + m_etaDecayRate;
while (current < options.length) {
options[current++] = "";
}
return options;
}
public void setOptions(String[] options) throws Exception {
// TODO: add later
}
public Enumeration listOptions() {
// TODO: add later
return null;
}
}