/* * File: OnlineKernelRandomizedBudgetPerceptronTest.java * Authors: Justin Basilico * Company: Sandia National Laboratories * Project: Cognitive Foundry Learning Core * * Copyright April 28, 2011, Sandia Corporation. * Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive * license for use of this work by or on behalf of the U.S. Government. Export * of this program may require a license from the United States Government. */ package gov.sandia.cognition.learning.algorithm.perceptron.kernel; import gov.sandia.cognition.learning.data.DefaultInputOutputPair; import gov.sandia.cognition.learning.function.kernel.LinearKernel; import gov.sandia.cognition.math.matrix.mtj.Vector2; import gov.sandia.cognition.learning.function.kernel.Kernel; import gov.sandia.cognition.math.matrix.Vector; import gov.sandia.cognition.learning.function.categorization.DefaultKernelBinaryCategorizer; import gov.sandia.cognition.learning.function.kernel.PolynomialKernel; import java.util.Random; import org.junit.Test; import static org.junit.Assert.*; /** * Unit tests for class OnlineKernelRandomizedBudgetPerceptron. * * @author Justin Basilico * @since 3.3.0 */ public class OnlineKernelRandomizedBudgetPerceptronTest extends OnlineKernelBinaryLearnerTestHarness<DefaultKernelBinaryCategorizer<Vector>> { /** Random number generator. */ protected Random random = new Random(211); /** * Creates a new test. */ public OnlineKernelRandomizedBudgetPerceptronTest() { } @Override protected OnlineKernelRandomizedBudgetPerceptron<Vector> createInstance( final Kernel<? super Vector> kernel) { return new OnlineKernelRandomizedBudgetPerceptron<Vector>( kernel, 100, random); } /** * Test of constructors of class OnlineKernelRandomizedBudgetPerceptron. */ @Test public void testConstructors() { Kernel<? super Vector> kernel = null; int budget = OnlineKernelRandomizedBudgetPerceptron.DEFAULT_BUDGET; OnlineKernelRandomizedBudgetPerceptron<Vector> instance = new OnlineKernelRandomizedBudgetPerceptron<Vector>(); assertSame(kernel, instance.getKernel()); assertEquals(budget, instance.getBudget()); assertNotNull(instance.getRandom()); kernel = new PolynomialKernel(1 + random.nextInt(10)); budget = 1 + random.nextInt(10000); Random random = new Random(); instance = new OnlineKernelRandomizedBudgetPerceptron<Vector>( kernel, budget, random); assertSame(kernel, instance.getKernel()); assertEquals(budget, instance.getBudget()); assertSame(random, instance.getRandom()); } /** * Test of update method, of class OnlineKernelRandomizedBudgetPerceptron. */ @Test public void testUpdate() { OnlineKernelRandomizedBudgetPerceptron<Vector> instance = new OnlineKernelRandomizedBudgetPerceptron<Vector>( new LinearKernel(), 3, random); DefaultKernelBinaryCategorizer<Vector> learned = instance.createInitialLearnedObject();; Vector input = new Vector2(2.0, 3.0); Boolean output = true; instance.update(learned, DefaultInputOutputPair.create(input, output)); assertEquals(1, learned.getExamples().size()); input = new Vector2(4.0, 4.0); output = true; instance.update(learned, DefaultInputOutputPair.create(input, output)); assertEquals(1, learned.getExamples().size()); input = new Vector2(1.0, 1.0); output = false; instance.update(learned, DefaultInputOutputPair.create(input, output)); assertEquals(2, learned.getExamples().size()); input = new Vector2(1.0, 1.0); output = false; instance.update(learned, DefaultInputOutputPair.create(input, output)); assertEquals(3, learned.getExamples().size()); input = new Vector2(2.0, 3.0); output = true; instance.update(learned, DefaultInputOutputPair.create(input, output)); assertEquals(3, learned.getExamples().size()); input = new Vector2(2.0, 3.0); output = false; instance.update(learned, DefaultInputOutputPair.create(input, output)); assertEquals(3, learned.getExamples().size()); } /** * Test of getRandom method, of class OnlineKernelRandomizedBudgetPerceptron. */ @Test public void testGetRandom() { this.testSetRandom(); } /** * Test of setRandom method, of class OnlineKernelRandomizedBudgetPerceptron. */ @Test public void testSetRandom() { Random random = null; OnlineKernelRandomizedBudgetPerceptron<Vector> instance = new OnlineKernelRandomizedBudgetPerceptron<Vector>(); assertNotNull(instance.getRandom()); random = new Random(); instance.setRandom(random); assertSame(random, instance.getRandom()); random = null; instance.setRandom(random); assertSame(random, instance.getRandom()); random = new Random(); instance.setRandom(random); assertSame(random, instance.getRandom()); } }