package ids.test;
import ids.clustering.model.Distance;
import ids.clustering.model.Domain;
import ids.clustering.utils.ClusterValidation;
import ids.framework.ConstraintBased;
import ids.framework.ConstraintWBased;
import ids.framework.ExperimentParams;
import ids.utils.CommonUtils;
public class TestConstraintBased {
public static void main(String[] args) {
// test simple case
//TestCBased();
// test fancy case
//TestCWBased();
// test weight based with credit card data set
TestCWBased_CreditCard();
}
public static void TestCBased() {
int n = 270;
int k = 2;
CommonUtils utils = new CommonUtils(false);
// Domain 1
Domain d1 = new Domain();
d1.data = utils.readDataFile("C:\\_Research\\Datasets\\Heart\\ndata_p.data", n, 6);
d1.k = k;
d1.name = "Iris data set";
d1.number_of_iterations = 1;
d1.distance = Distance.SQEUCLIDEAN;
d1.number_constraints = 5;
// Domain 2
Domain d2 = new Domain();
d2.data = utils.readDataFile("C:\\_Research\\Datasets\\Heart\\cdata.data", n, 7);
d2.k = k;
d2.name = "Iris data set";
d2.number_of_iterations = 1;
d2.distance = Distance.MATCH;
d2.number_constraints = 5;
// parameters
ExperimentParams par = new ExperimentParams();
par.maximum_number_iterations = 30;
par.minimum_number_iterations = 10;
par.verbose = true;
// framework
ConstraintBased f = new ConstraintBased(d1, d2, par);
f.Start();
}
public static void TestCWBased_CreditCard() {
int n = 690;
int k = 2;
CommonUtils utils = new CommonUtils(false);
// Domain 1
Domain d1 = new Domain();
d1.data = utils.readDataFile("C:\\_Research\\Datasets\\CreditCard\\ndata_p.data", n, 6);
d1.k = k;
d1.name = "Iris data set";
d1.number_of_iterations = 1;
d1.distance = Distance.SQEUCLIDEAN;
d1.number_constraints = 0;
// Domain 2
Domain d2 = new Domain();
d2.data = utils.readDataFile("C:\\_Research\\Datasets\\CreditCard\\cdata.data", n, 9);
d2.k = k;
d2.name = "Iris data set";
d2.number_of_iterations = 1;
d2.distance = Distance.MATCH;
d2.number_constraints = 0;
// parameters
ExperimentParams par = new ExperimentParams();
par.maximum_number_iterations = 30;
par.minimum_number_iterations = 10;
par.verbose = true;
// framework
ConstraintWBased fw = new ConstraintWBased(d1, d2, par);
fw.Start();
// validate. Find DB indices for numerical and categorical domains
ClusterValidation cv = new ClusterValidation(false);
double db1 = cv.findDBIndex(d1.data, fw.getDomain1().idx, fw.getDomain1().centroids, d1.k, d1.distance);
double db2 = cv.findDBIndex(d2.data, fw.getDomain2().idx, fw.getDomain2().centroids, d2.k, d2.distance);
System.out.println("DB index for numerical domain: " + db1);
System.out.println("DB index for categorical domain: " + db2);
}
public static void TestCWBased() {
int n = 270;
int k = 2;
CommonUtils utils = new CommonUtils(false);
// Domain 1
Domain d1 = new Domain();
d1.data = utils.readDataFile("C:\\_Research\\Datasets\\Heart\\ndata_p.data", n, 6);
d1.k = k;
d1.name = "Iris data set";
d1.number_of_iterations = 1;
d1.distance = Distance.SQEUCLIDEAN;
d1.number_constraints = 0;
// Domain 2
Domain d2 = new Domain();
d2.data = utils.readDataFile("C:\\_Research\\Datasets\\Heart\\cdata.data", n, 7);
d2.k = k;
d2.name = "Iris data set";
d2.number_of_iterations = 1;
d2.distance = Distance.MATCH;
d2.number_constraints = 0;
// parameters
ExperimentParams par = new ExperimentParams();
par.maximum_number_iterations = 30;
par.minimum_number_iterations = 10;
par.verbose = true;
// framework
ConstraintWBased fw = new ConstraintWBased(d1, d2, par);
fw.Start();
}
}