/* * File: AnytimeBatchLearnerValidationPerformanceReporterTest.java * Authors: Justin Basilico * Project: Cognitive Foundry * * Copyright 2013 Cognitive Foundry. All rights reserved. */ package gov.sandia.cognition.learning.performance; import gov.sandia.cognition.learning.algorithm.perceptron.Perceptron; import gov.sandia.cognition.learning.data.DefaultInputOutputPair; import gov.sandia.cognition.learning.data.InputOutputPair; import gov.sandia.cognition.learning.function.categorization.LinearBinaryCategorizer; import gov.sandia.cognition.math.matrix.Vector; import gov.sandia.cognition.math.matrix.VectorFactory; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.util.ArrayList; import java.util.List; import java.util.Random; import org.junit.Test; import static org.junit.Assert.*; /** * Unit tests for class {@link AnytimeBatchLearnerValidationPerformanceReporter}. * @author Justin Basilico * @since 3.4.0 */ public class AnytimeBatchLearnerValidationPerformanceReporterTest extends Object { protected Random random = new Random(10001); /** * Creates a new test. */ public AnytimeBatchLearnerValidationPerformanceReporterTest() { super(); } /** * Test of stepEnded method, of class AnytimeBatchLearnerValidationPerformanceReporter. */ @Test public void testStepEnded() { List<InputOutputPair<Vector, Boolean>> training = new ArrayList<InputOutputPair<Vector, Boolean>>(); List<InputOutputPair<Vector, Boolean>> testing = new ArrayList<InputOutputPair<Vector, Boolean>>(); VectorFactory<?> vf = VectorFactory.getDenseDefault(); int d = 3; for (int i = 0; i < 10; i++) { training.add(DefaultInputOutputPair.create( vf.createUniformRandom(d, -1, 1, random), random.nextBoolean())); testing.add(DefaultInputOutputPair.create( vf.createUniformRandom(d, -1, 1, random), random.nextBoolean())); } MeanZeroOneErrorEvaluator<Vector, Boolean> performanceEvaluator = new MeanZeroOneErrorEvaluator<Vector, Boolean>(); ByteArrayOutputStream out = new ByteArrayOutputStream(); PrintStream outPrintStream = new PrintStream(out); AnytimeBatchLearnerValidationPerformanceReporter<List<InputOutputPair<Vector, Boolean>>, LinearBinaryCategorizer> instance = new AnytimeBatchLearnerValidationPerformanceReporter<List<InputOutputPair<Vector, Boolean>>, LinearBinaryCategorizer>( performanceEvaluator, testing, outPrintStream); Perceptron algorithm = new Perceptron(); algorithm.setMaxIterations(1); algorithm.addIterativeAlgorithmListener(instance); // stepEnded gets called through learn. algorithm.learn(training); System.out.println(out.toString()); assertTrue(!out.toString().isEmpty()); } }