weka.classifiers.functions
Class VotedPerceptron

java.lang.Object
  extended byweka.classifiers.Classifier
      extended byweka.classifiers.functions.VotedPerceptron
All Implemented Interfaces:
java.lang.Cloneable, OptionHandler, java.io.Serializable

public class VotedPerceptron
extends Classifier
implements OptionHandler

Implements the voted perceptron algorithm by Freund and Schapire. Globally replaces all missing values, and transforms nominal attributes into binary ones. For more information, see

Y. Freund and R. E. Schapire (1998). Large margin classification using the perceptron algorithm. Proc. 11th Annu. Conf. on Comput. Learning Theory, pp. 209-217, ACM Press, New York, NY.

Valid options are:

-I num
The number of iterations to be performed. (default 1)

-E num
The exponent for the polynomial kernel. (default 1)

-S num
The seed for the random number generator. (default 1)

-M num
The maximum number of alterations allowed. (default 10000)

Version:
$Revision: 1.17 $
Author:
Eibe Frank (eibe@cs.waikato.ac.nz)
See Also:
Serialized Form

Field Summary
private  int[] m_Additions
          The training instances added to the perceptron
private  double m_Exponent
          The exponent
private  boolean[] m_IsAddition
          Addition or subtraction?
private  int m_K
          The actual number of alterations
private  int m_MaxK
          The maximum number of alterations to the perceptron
private  NominalToBinary m_NominalToBinary
          The filter used to make attributes numeric.
private  int m_NumIterations
          The number of iterations
private  ReplaceMissingValues m_ReplaceMissingValues
          The filter used to get rid of missing values.
private  int m_Seed
          Seed used for shuffling the dataset
private  Instances m_Train
          The training instances
private  int[] m_Weights
          The weights for each perceptron
 
Fields inherited from class weka.classifiers.Classifier
m_Debug
 
Constructor Summary
VotedPerceptron()
           
 
Method Summary
 void buildClassifier(Instances insts)
          Builds the ensemble of perceptrons.
 double[] distributionForInstance(Instance inst)
          Outputs the distribution for the given output.
 java.lang.String exponentTipText()
          Returns the tip text for this property
 double getExponent()
          Get the value of exponent.
 int getMaxK()
          Get the value of maxK.
 int getNumIterations()
          Get the value of NumIterations.
 java.lang.String[] getOptions()
          Gets the current settings of the classifier.
 int getSeed()
          Get the value of Seed.
 java.lang.String globalInfo()
          Returns a string describing this classifier
private  double innerProduct(Instance i1, Instance i2)
          Computes the inner product of two instances
 java.util.Enumeration listOptions()
          Returns an enumeration describing the available options.
static void main(java.lang.String[] argv)
          Main method.
private  int makePrediction(int k, Instance inst)
          Compute a prediction from a perceptron
 java.lang.String maxKTipText()
          Returns the tip text for this property
 java.lang.String numIterationsTipText()
          Returns the tip text for this property
 java.lang.String seedTipText()
          Returns the tip text for this property
 void setExponent(double v)
          Set the value of exponent.
 void setMaxK(int v)
          Set the value of maxK.
 void setNumIterations(int v)
          Set the value of NumIterations.
 void setOptions(java.lang.String[] options)
          Parses a given list of options.
 void setSeed(int v)
          Set the value of Seed.
 java.lang.String toString()
          Returns textual description of classifier.
 
Methods inherited from class weka.classifiers.Classifier
classifyInstance, debugTipText, forName, getDebug, makeCopies, setDebug
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

m_MaxK

private int m_MaxK
The maximum number of alterations to the perceptron


m_NumIterations

private int m_NumIterations
The number of iterations


m_Exponent

private double m_Exponent
The exponent


m_K

private int m_K
The actual number of alterations


m_Additions

private int[] m_Additions
The training instances added to the perceptron


m_IsAddition

private boolean[] m_IsAddition
Addition or subtraction?


m_Weights

private int[] m_Weights
The weights for each perceptron


m_Train

private Instances m_Train
The training instances


m_Seed

private int m_Seed
Seed used for shuffling the dataset


m_NominalToBinary

private NominalToBinary m_NominalToBinary
The filter used to make attributes numeric.


m_ReplaceMissingValues

private ReplaceMissingValues m_ReplaceMissingValues
The filter used to get rid of missing values.

Constructor Detail

VotedPerceptron

public VotedPerceptron()
Method Detail

globalInfo

public java.lang.String globalInfo()
Returns a string describing this classifier

Returns:
a description of the classifier suitable for displaying in the explorer/experimenter gui

listOptions

public java.util.Enumeration listOptions()
Returns an enumeration describing the available options.

Specified by:
listOptions in interface OptionHandler
Overrides:
listOptions in class Classifier
Returns:
an enumeration of all the available options.

setOptions

public void setOptions(java.lang.String[] options)
                throws java.lang.Exception
Parses a given list of options. Valid options are:

-I num
The number of iterations to be performed. (default 1)

-E num
The exponent for the polynomial kernel. (default 1)

-S num
The seed for the random number generator. (default 1)

-M num
The maximum number of alterations allowed. (default 10000)

Specified by:
setOptions in interface OptionHandler
Overrides:
setOptions in class Classifier
Parameters:
options - the list of options as an array of strings
Throws:
java.lang.Exception - if an option is not supported

getOptions

public java.lang.String[] getOptions()
Gets the current settings of the classifier.

Specified by:
getOptions in interface OptionHandler
Overrides:
getOptions in class Classifier
Returns:
an array of strings suitable for passing to setOptions

buildClassifier

public void buildClassifier(Instances insts)
                     throws java.lang.Exception
Builds the ensemble of perceptrons.

Specified by:
buildClassifier in class Classifier
Parameters:
insts - set of instances serving as training data
Throws:
java.lang.Exception - if something goes wrong during building

distributionForInstance

public double[] distributionForInstance(Instance inst)
                                 throws java.lang.Exception
Outputs the distribution for the given output. Pipes output of SVM through sigmoid function.

Overrides:
distributionForInstance in class Classifier
Parameters:
inst - the instance for which distribution is to be computed
Returns:
the distribution
Throws:
java.lang.Exception - if something goes wrong

toString

public java.lang.String toString()
Returns textual description of classifier.


maxKTipText

public java.lang.String maxKTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

getMaxK

public int getMaxK()
Get the value of maxK.

Returns:
Value of maxK.

setMaxK

public void setMaxK(int v)
Set the value of maxK.

Parameters:
v - Value to assign to maxK.

numIterationsTipText

public java.lang.String numIterationsTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

getNumIterations

public int getNumIterations()
Get the value of NumIterations.

Returns:
Value of NumIterations.

setNumIterations

public void setNumIterations(int v)
Set the value of NumIterations.

Parameters:
v - Value to assign to NumIterations.

exponentTipText

public java.lang.String exponentTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

getExponent

public double getExponent()
Get the value of exponent.

Returns:
Value of exponent.

setExponent

public void setExponent(double v)
Set the value of exponent.

Parameters:
v - Value to assign to exponent.

seedTipText

public java.lang.String seedTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

getSeed

public int getSeed()
Get the value of Seed.

Returns:
Value of Seed.

setSeed

public void setSeed(int v)
Set the value of Seed.

Parameters:
v - Value to assign to Seed.

innerProduct

private double innerProduct(Instance i1,
                            Instance i2)
                     throws java.lang.Exception
Computes the inner product of two instances

Throws:
java.lang.Exception

makePrediction

private int makePrediction(int k,
                           Instance inst)
                    throws java.lang.Exception
Compute a prediction from a perceptron

Throws:
java.lang.Exception

main

public static void main(java.lang.String[] argv)
Main method.