/*
* File: KernelBinaryCategorizerOnlineLearnerAdapter.java
* Authors: Justin Basilico
* Company: Sandia National Laboratories
* Project: Cognitive Foundry Learning Core
*
* Copyright March 10, 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.InputOutputPair;
import gov.sandia.cognition.learning.function.categorization.DefaultKernelBinaryCategorizer;
import gov.sandia.cognition.learning.function.kernel.Kernel;
import gov.sandia.cognition.learning.algorithm.perceptron.KernelizableBinaryCategorizerOnlineLearner;
/**
* A wrapper class for a {@code KernelizableBinaryCategorizerOnlineLearner}
* that allows it to be used as a batch or incremental learner over the
* input type directly, rather than using utility methods.
*
* @param <InputType>
* The input type to perform learning over. It is passed to the kernel
* function.
* @author Justin Basilico
* @since 3.3.0
*/
public class KernelBinaryCategorizerOnlineLearnerAdapter<InputType>
extends AbstractOnlineKernelBinaryCategorizerLearner<InputType>
{
/** The wrapped kernelizable learner. */
protected KernelizableBinaryCategorizerOnlineLearner learner;
/**
* Creates a new {@code KernelBinaryCategorizerOnlineLearnerAdapter} with
* a null learner.
*/
public KernelBinaryCategorizerOnlineLearnerAdapter()
{
super();
}
/**
* Creates a new {@code KernelBinaryCategorizerOnlineLearnerAdapter} with
* the given kernel and learner.
*
* @param kernel
* The kernel to use.
* @param learner
* The kernelizable learner to use.
*/
public KernelBinaryCategorizerOnlineLearnerAdapter(
final Kernel<? super InputType> kernel,
final KernelizableBinaryCategorizerOnlineLearner learner)
{
super(kernel);
this.setLearner(learner);
}
@Override
public DefaultKernelBinaryCategorizer<InputType> createInitialLearnedObject()
{
return this.getLearner().createInitialLearnedObject(this.getKernel());
}
@Override
public void update(
final DefaultKernelBinaryCategorizer<InputType> target,
final InputOutputPair<? extends InputType, Boolean> data)
{
this.getLearner().update(target, data);
}
@Override
public void update(DefaultKernelBinaryCategorizer<InputType> target,
InputType input,
Boolean output)
{
this.getLearner().update(target, input, output);
}
@Override
public void update(
final DefaultKernelBinaryCategorizer<InputType> target,
final InputType input,
final boolean output)
{
this.getLearner().update(target, input, output);
}
/**
* Gets the kernelizable learner that this adapter is wrapping.
*
* @return
* The kernelizable learner that this adapter is wrapping.
*/
public KernelizableBinaryCategorizerOnlineLearner getLearner()
{
return this.learner;
}
/**
* Sets the kernelizable learner that this adapter is wrapping.
*
* @param learner
* The kernelizable learner that this adapter is wrapping.
*/
public void setLearner(
final KernelizableBinaryCategorizerOnlineLearner learner)
{
this.learner = learner;
}
}