view src/MLTest.java @ 0:036535fcd179

anteater
author jdamerow
date Fri, 14 Sep 2012 10:30:43 +0200
parents
children
line wrap: on
line source

import java.io.IOException;
import java.util.Enumeration;

import weka.classifiers.Classifier;
import weka.core.Instance;
import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSource;


public class MLTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
//		Dataset data = null;
//		try {
//			data = FileHandler.loadDataset(new File("/Users/jdamerow/MPIWG/EndangeredSpecies/workspace/de.mpiwg.anteater/training/ApplicantTrainingDataData.data"), 0, ";");
//		} catch (IOException e1) {
//			// TODO Auto-generated catch block
//			e1.printStackTrace();
//			return;
//		}
		 /* Contruct a KNN classifier that uses 5 neighbors to make a
//		  *decision. */
//		Classifier knn = new KNearestNeighbors(5);
//		knn.buildClassifier(data);
		
		
//		int correct = 0, wrong = 0;
//		/* Classify all instances and check with the correct class values */
//		for (Instance inst : dataForClassification) {
//		    Object predictedClassValue = knn.classify(inst);
//		    Object realClassValue = inst.classValue();
//		    if (predictedClassValue == realClassValue)
//		        correct++;
//		    else
//		        wrong++;
//		}
		
		//LMT lmt = new LMT();
		
		Classifier cls = null;
		try {
			cls = (Classifier) weka.core.SerializationHelper.read("/Users/jdamerow/MPIWG/EndangeredSpecies/workspace/de.mpiwg.anteater/src/LMT.model");
		} catch (Exception e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		Instances testData = null;
		try {
			testData = DataSource.read("/Users/jdamerow/MPIWG/EndangeredSpecies/workspace/de.mpiwg.anteater/mlAnalysis/00-18565.arff");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		testData.setClassIndex(0);
		
//		Instances trainData = null;
//		try {
//			trainData = DataSource.read("/Users/jdamerow/MPIWG/EndangeredSpecies/workspace/de.mpiwg.anteater/training/ApplicantTrainingDataWithoutTID.arff");
//		} catch (IOException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		} catch (Exception e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//		trainData.setClassIndex(0);
		
		Enumeration<Instance> en = testData.enumerateInstances();
		while (en.hasMoreElements()) {
			try {
				System.out.println(cls.classifyInstance(en.nextElement()));
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
//		Evaluation eval;
//		try {
//			eval = new Evaluation(trainData);
//			double[] results = eval.evaluateModel(cls, testData);
//			Enumeration<?> en = eval.predictions().elements();
//			while (en.hasMoreElements()) {
//				System.out.println();
//				System.out.println(en.nextElement());
//			}
//			System.out.println(eval.toMatrixString());
//			System.out.println("correct " + eval.pctCorrect());
//			System.out.println("incorrect " + eval.pctIncorrect());
//		} catch (Exception e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
		
		/* Wrap Weka classifier in bridge */
//		Classifier javamlsmo = new WekaClassifier(smo);
//		/* Initialize cross-validation */
//		CrossValidation cv = new CrossValidation(javamlsmo);
//		/* Perform cross-validation */
//		Map<Object, PerformanceMeasure> pm = cv.crossValidation(data);
		
//		 /* Load a dataset */
//        Dataset dataForClassification = null;
//		try {
//			dataForClassification = FileHandler.loadDataset(new File("/Users/jdamerow/MPIWG/EndangeredSpecies/workspace/de.mpiwg.anteater/training/ApplicantTrainingDataData.data"), 0, ";");
//		} catch (IOException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//			return;
//		}
//		int correct = 0, wrong = 0;
//		/* Classify all instances and check with the correct class values */
//		for (Instance inst : dataForClassification) {
//		    Object predictedClassValue = javamlsmo.classify(inst);
//		    Object realClassValue = inst.classValue();
//		    if (predictedClassValue == realClassValue)
//		        correct++;
//		    else
//		        wrong++;
//		}
//		
		
//		System.out.println("right " + correct);
//		System.out.println("wrong " + wrong);
	}

}