package ids.test; import ids.clustering.model.Distance; import ids.clustering.model.Domain; import ids.clustering.model.ObjectiveFunctionType; import ids.clustering.utils.ClusterValidation; import ids.framework.ConstraintBasedU; import ids.framework.ExperimentParams; import ids.utils.CommonUtils; public class TestConstraintBasedU { public static void main(String[] args) { Test_Iris(); } public static void Test_Heart() { int k = 2; } public static void Test_Iris() { int k = 3; // load utilities CommonUtils utils = new CommonUtils(false); // read class labels int[] class_labels = utils.readVectorFromFile("datasets/iris/iris_class.csv"); // Domain 1 Domain d1 = new Domain(); d1.data = utils.readDataFile("datasets/iris/iris_t1.csv"); d1.k = k; d1.name = "Iris data set, T1"; d1.number_of_iterations = 1; d1.distance = Distance.SQEUCLIDEAN; d1.number_constraints = 2; // Domain 2 Domain d2 = new Domain(); d2.data = utils.readDataFile("datasets/iris/iris_t2.csv"); d2.k = k; d2.name = "Iris data set, T2"; d2.number_of_iterations = 1; d2.distance = Distance.SQEUCLIDEAN; d2.number_constraints = 2; // parameters ExperimentParams par = new ExperimentParams(); par.maximum_number_iterations = 30; par.minimum_number_iterations = 10; par.verbose = true; par.debug = false; par.useTC = true; par.keepCentroids = true; // framework ConstraintBasedU fw = new ConstraintBasedU(d1, d2, par, ObjectiveFunctionType.CONST_WEIGHTS); fw.Start(); // get the value of the objective functions double[] d1_obj = fw.getD1_objF(); double[] d2_obj = fw.getD2_objF(); // save it hard drive utils.saveToFile(d1_obj, "datasets/iris/results/d1_obj.csv"); utils.saveToFile(d2_obj, "datasets/iris/results/d2_obj.csv"); // Evaluate clustering ClusterValidation valid = new ClusterValidation(); double d1_nmi = valid.findNMI(fw.getDomain1().idx, class_labels); double d2_nmi = valid.findNMI(fw.getDomain2().idx, class_labels); System.out.printf("Domain 1 NMI: %5.4f\nDomain 2 NMI: %5.4f\n", d1_nmi, d2_nmi); } }