public static void main(String[] args) throws bsh.EvalError, java.io.IOException { // Process the command-line options commandOptions.process(args); System.out.println("Trainer = " + trainerConstructorOption.value.toString()); ClassifierTrainer trainer = (ClassifierTrainer) trainerConstructorOption.value; InstanceList ilist = InstanceList.load(new File(instanceListFilenameOption.value)); Random r = randomSeedOption.wasInvoked() ? new Random(randomSeedOption.value) : new Random(); double t = trainingProportionOption.value; double v = validationProportionOption.value; InstanceList[] ilists = ilist.split(r, new double[] {t, v, 1 - t - v}); System.err.println("Training..."); Classifier c = trainer.train( ilists[0], ilists[1], null, (ClassifierEvaluating) classifierEvaluatorOption.value, null); if (printTrainAccuracyOption.value) System.out.print("Train accuracy = " + c.getAccuracy(ilists[0]) + " "); if (printTestAccuracyOption.value) System.out.print("Test accuracy = " + c.getAccuracy(ilists[2])); if (printTrainAccuracyOption.value || printTestAccuracyOption.value) System.out.println(""); if (outputFilenameOption.wasInvoked()) { try { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(instanceListFilenameOption.value)); oos.writeObject(c); oos.close(); } catch (Exception e) { e.printStackTrace(); throw new IllegalArgumentException( "Couldn't write classifier to filename " + instanceListFilenameOption.value); } } }