package edu.cmu.minorthird.ui; import java.io.File; import java.io.IOException; import edu.cmu.minorthird.classify.ClassifierLearner; import edu.cmu.minorthird.classify.Dataset; import edu.cmu.minorthird.classify.DatasetLoader; import edu.cmu.minorthird.classify.Example; import edu.cmu.minorthird.classify.experiments.CrossValSplitter; import edu.cmu.minorthird.classify.experiments.Evaluation; import edu.cmu.minorthird.classify.experiments.Tester; import edu.cmu.minorthird.util.gui.ViewerFrame; /** * A simple UI for training and testing classifiers * * @author frank */ public class SimpleClassifierUI{ public static void main(String[] args){ if(args.length<4||args.length>5){ usage(); return; } try{ // load parameters File dataFile=new File(args[0]); String learnerName=args[1]; int cvFolds=Integer.parseInt(args[2]); boolean gui=Boolean.parseBoolean(args[3]); String saveFile=null; if(args.length==5){ saveFile=args[4]; } // load dataset Dataset data=DatasetLoader.loadFile(dataFile); // create learner ClassifierLearner learner=(ClassifierLearner)CommandLineUtil.newObjectFromBSH(learnerName,ClassifierLearner.class); // evaluate Evaluation eval=Tester.evaluate(learner,data,new CrossValSplitter<Example>(cvFolds)); // view results if(gui){ new ViewerFrame("Evaluation Results for "+dataFile.getName(),eval.toGUI()); } else{ System.out.println("Error Rate: "+eval.errorRate()); } // save evaluation results if(saveFile!=null){ eval.save(new File(saveFile+".eval.gz")); } }catch(IOException e){ e.printStackTrace(); } } private static void usage(){ System.out.println("Usage:"); System.out.println(" SimpleClassifierUI TRAIN_FILE CLASSIFIER CV_FOLDS GUI_OP [EVAL_SAVE_FILE]"); System.out.println(" GUI_OP=[true|false]"); } }