package ids.test; import ids.clustering.algorithm.HMRFKmeansParams; import ids.clustering.algorithm.HMRFKmeansU; import ids.clustering.model.Distance; import ids.clustering.model.ObjectiveFunctionType; import ids.clustering.utils.ClusterValidation; import ids.utils.CommonUtils; public class TestHMRFKmeansU { public static void main(String[] args) { System.out.println("Start testing Universal HMRF-Kmeans"); heart_HMRF_cdata(); } private static void heart_HMRF_cdata() { // Utilities CommonUtils utils = new CommonUtils(false); double[][] cdata = utils.readDataFile("datasets/heart/cdata.csv"); //int[] class_column = utils.readVectorFromFile("datasets/heart/class_column.csv"); // number of clusters int k = 2; HMRFKmeansParams par = new HMRFKmeansParams(); par.constraints = utils.readDataFile("datasets/heart/constraints.csv"); par.verbose = true; par.useTC = true; par.debug = false; par.distanceFunction = Distance.MATCH; HMRFKmeansU kmeans = new HMRFKmeansU(cdata, k, par); kmeans.cluster(); } private static void heart_HMRF_ndata() { // Utilities CommonUtils utils = new CommonUtils(false); double[][] ndata = utils.readDataFile("datasets/heart/ndata.csv"); //double[][] cdata = utils.readDataFile("datasets/heart/cdata.csv"); //int[] class_column = utils.readVectorFromFile("datasets/heart/class_column.csv"); // number of clusters int k = 2; HMRFKmeansParams par = new HMRFKmeansParams(); par.constraints = utils.readDataFile("datasets/heart/constraints.csv"); par.verbose = true; par.useTC = true; par.debug = false; HMRFKmeansU kmeans = new HMRFKmeansU(ndata, k, par); kmeans.cluster(); } private static void testIris_Kmeans() { int n = 150; CommonUtils utils = new CommonUtils(false); // read iris data set double[][] d1_data = utils.readDataFile("datasets/iris/iris_t1.csv", n, 2); double[][] d2_data = utils.readDataFile("datasets/iris/iris_t2.csv", n, 2); // actual class labels double[][] class_column = utils.readDataFile("datasets/iris/iris_class.csv", 150, 1); int[] iris_class = new int[n]; for (int i = 0; i < n; i++) iris_class[i] = (int)class_column[i][0]; // Number of clusters int k = 3; int[] seeds = {66, 53, 104}; // Domain 1 centroids double[][] d1_centroids = utils.getRows(d1_data, seeds); double[][] d2_centroids = utils.getRows(d2_data, seeds); // cluster parameters HMRFKmeansParams par = new HMRFKmeansParams(); par.centeroids = d1_centroids; par.verbose = true; par.debug = false; par.obj_type = ObjectiveFunctionType.CENTROIDS; // cluster T1 System.out.println("Cluster T1"); HMRFKmeansU d1_kmeans = new HMRFKmeansU(d1_data, k, par); d1_kmeans.cluster(); // cluster T1 par.centeroids = d2_centroids; System.out.println("Cluster T1"); HMRFKmeansU d2_kmeans = new HMRFKmeansU(d2_data, k, par); d2_kmeans.cluster(); } private static void testIris_HMRFKmeans() { int n = 150; CommonUtils utils = new CommonUtils(false); ClusterValidation valid = new ClusterValidation(true); // read iris data set double[][] d1_data = utils.readDataFile("datasets/iris/iris_t1.csv", n, 2); double[][] d2_data = utils.readDataFile("datasets/iris/iris_t2.csv", n, 2); // actual class labels double[][] class_column = utils.readDataFile("datasets/iris/iris_class.csv", 150, 1); int[] iris_class = new int[n]; for (int i = 0; i < n; i++) iris_class[i] = (int)class_column[i][0]; // read constraints double[][] constraints = utils.readDataFile("datasets/iris/iris_constraints.csv"); // Number of clusters int k = 3; int[] seeds = {66, 53, 104}; // Domain 1 centroids double[][] d1_centroids = utils.getRows(d1_data, seeds); double[][] d2_centroids = utils.getRows(d2_data, seeds); // cluster parameters HMRFKmeansParams par = new HMRFKmeansParams(); //par.centeroids = d1_centroids; par.constraints = constraints; par.verbose = true; par.debug = true; par.obj_type = ObjectiveFunctionType.NO_WEIGTHS; // cluster T1 System.out.println("Cluster T1"); HMRFKmeansU d1_kmeans = new HMRFKmeansU(d1_data, k, par); d1_kmeans.cluster(); double nmi = valid.findNMI(d1_kmeans.getIDX(), iris_class); // // cluster T1 // par.centeroids = d2_centroids; // System.out.println("Cluster T1"); // HMRFKmeansU d2_kmeans = new HMRFKmeansU(d2_data, k, par, ObjectiveFunctionType.KMEANS); // d2_kmeans.cluster(); } }