Overview | Package | Class | Tree | Deprecated | Index | Help | Weka's home
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## weka.classifiers.functions
Class MultilayerPerceptron

    java.lang.Object
      weka.classifiers.Classifier
          weka.classifiers.functions.MultilayerPerceptron

All Implemented Interfaces:
  java.io.Serializable, java.lang.Cloneable, CapabilitiesHandler, OptionHandler, Randomizable, RevisionHandler, WeightedInstancesHandler

    public class MultilayerPerceptron

extends Classifier
implements OptionHandler, WeightedInstancesHandler, Randomizable

A Classifier that uses backpropagation to classify instances.
This network can be built by hand, created by an algorithm or both. The network can also be monitored and modified during training time. The nodes in this network are all sigmoid (except for when the class is numeric in which case the the output nodes become unthresholded linear units).

Valid options are:

     -L <learning rate>
      Learning Rate for the backpropagation algorithm.
      (Value should be between 0 - 1, Default = 0.3).

     -M <momentum>
      Momentum Rate for the backpropagation algorithm.
      (Value should be between 0 - 1, Default = 0.2).

     -N <number of epochs>
      Number of epochs to train through.
      (Default = 500).

     -V <percentage size of validation set>
      Percentage size of validation set to use to terminate
      training (if this is non zero it can pre-empt num of epochs.
      (Value should be between 0 - 100, Default = 0).

     -S <seed>
      The value used to seed the random number generator
      (Value should be >= 0 and and a long, Default = 0).

     -E <threshold for number of consequetive errors>
      The consequetive number of errors allowed for validation
      testing before the netwrok terminates.
      (Value should be > 0, Default = 20).

     -G
      GUI will be opened.
      (Use this to bring up a GUI).

     -A
      Autocreation of the network connections will NOT be done.
      (This will be ignored if -G is NOT set)

     -B
      A NominalToBinary filter will NOT automatically be used.
      (Set this to not use a NominalToBinary filter).

     -H <comma seperated numbers for nodes on each layer>
      The hidden layers to be created for the network.
      (Value should be a list of comma separated Natural
      numbers or the letters 'a' = (attribs + classes) / 2,
      'i' = attribs, 'o' = classes, 't' = attribs .+ classes)
      for wildcard values, Default = a).

     -C
      Normalizing a numeric class will NOT be done.
      (Set this to not normalize the class if it's numeric).

     -I
      Normalizing the attributes will NOT be done.
      (Set this to not normalize the attributes).

     -R
      Reseting the network will NOT be allowed.
      (Set this to not allow the network to reset).

     -D
      Learning rate decay will occur.
      (Set this to cause the learning rate to decay).

Version:
  $Revision: 6563 $
Author:
  Malcolm Ware (mfw4@cs.waikato.ac.nz)
See Also:
  Serialized Form

Constructor Summary
`MultilayerPerceptron()` The constructor.

Method Summary
`java.lang.String` | `autoBuildTipText()`
`void` | `blocker(boolean tf)` A function used to stop the code that called buildclassifier from continuing on before the user has finished the decision tree.
`void` | `buildClassifier(Instances i)` Call this function to build and train a neural network for the training data provided.
`java.lang.String` | `decayTipText()`
`double[]` | `distributionForInstance(Instance i)` Call this function to predict the class of an instance once a classification model has been built with the buildClassifier call.
`boolean` | `getAutoBuild()`
`Capabilities` | `getCapabilities()` Returns default capabilities of the classifier.
`boolean` | `getDecay()`
`boolean` | `getGUI()`
`java.lang.String` | `getHiddenLayers()`
`double` | `getLearningRate()`
`double` | `getMomentum()`
`boolean` | `getNominalToBinaryFilter()`
`boolean` | `getNormalizeAttributes()`
`boolean` | `getNormalizeNumericClass()`
`java.lang.String[]` | `getOptions()` Gets the current settings of NeuralNet.
`boolean` | `getReset()`
`java.lang.String` | `getRevision()` Returns the revision string.
`int` | `getSeed()` Gets the seed for the random number generations
`int` | `getTrainingTime()`
`int` | `getValidationSetSize()`
`int` | `getValidationThreshold()`
`java.lang.String` | `globalInfo()` This will return a string describing the classifier.
`java.lang.String` | `GUITipText()`
`java.lang.String` | `hiddenLayersTipText()`
`java.lang.String` | `learningRateTipText()`
`java.util.Enumeration` | `listOptions()` Returns an enumeration describing the available options.
`static void` | `main(java.lang.String[] argv)` Main method for testing this class.
`java.lang.String` | `momentumTipText()`
`java.lang.String` | `nominalToBinaryFilterTipText()`
`java.lang.String` | `normalizeAttributesTipText()`
`java.lang.String` | `normalizeNumericClassTipText()`
`java.lang.String` | `resetTipText()`
`java.lang.String` | `seedTipText()`
`void` | `setAutoBuild(boolean a)` This will set whether the network is automatically built or if it is left up to the user.
`void` | `setDecay(boolean d)`
`void` | `setGUI(boolean a)` This will set whether A GUI is brought up to allow interaction by the user with the neural network during training.
`void` | `setHiddenLayers(java.lang.String h)` This will set what the hidden layers are made up of when auto build is enabled.
`void` | `setLearningRate(double l)` The learning rate can be set using this command.
`void` | `setMomentum(double m)` The momentum can be set using this command.
`void` | `setNominalToBinaryFilter(boolean f)`
`void` | `setNormalizeAttributes(boolean a)`
`void` | `setNormalizeNumericClass(boolean c)`
`void` | `setOptions(java.lang.String[] options)` Parses a given list of options.
`void` | `setReset(boolean r)` This sets the network up to be able to reset itself with the current settings and the learning rate at half of what it is currently.
`void` | `setSeed(int l)` This seeds the random number generator, that is used when a random number is needed for the network.
`void` | `setTrainingTime(int n)` Set the number of training epochs to perform.
`void` | `setValidationSetSize(int a)` This will set the size of the validation set.
`void` | `setValidationThreshold(int t)` This sets the threshold to use for when validation testing is being done.
`java.lang.String` | `toString()`
`java.lang.String` | `trainingTimeTipText()`
`java.lang.String` | `validationSetSizeTipText()`
`java.lang.String` | `validationThresholdTipText()`

Methods inherited from class weka.classifiers.Classifier
`classifyInstance, debugTipText, forName, getDebug, makeCopies, makeCopy, setDebug`

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### MultilayerPerceptron

    public MultilayerPerceptron()

  The constructor.

Method Detail

### main

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

  Main method for testing this class.

  Parameters:
    `argv` - should contain command line options (see setOptions)

### setDecay

    public void setDecay(boolean d)

  Parameters:
    `d` - True if the learning rate should decay.

### getDecay

    public boolean getDecay()

  Returns:
    the flag for having the learning rate decay.

### setReset

    public void setReset(boolean r)

  This sets the network up to be able to reset itself with the current settings and the learning rate at half of what it is currently. This will only happen if the network creates NaN or infinite errors. Also this will continue to happen until the network is trained properly. The learning rate will also get set back to it's original value at the end of this. This can only be set to true if the GUI is not brought up.

  Parameters:
    `r` - True if the network should restart with it's current options and set the learning rate to half what it currently is.

### getReset

    public boolean getReset()

  Returns:
    The flag for reseting the network.

### setNormalizeNumericClass

    public void setNormalizeNumericClass(boolean c)

  Parameters:
    `c` - True if the class should be normalized (the class will only ever be normalized if it is numeric). (Normalization puts the range between -1 - 1).

### getNormalizeNumericClass

    public boolean getNormalizeNumericClass()

  Returns:
    The flag for normalizing a numeric class.

### setNormalizeAttributes

    public void setNormalizeAttributes(boolean a)

  Parameters:
    `a` - True if the attributes should be normalized (even nominal attributes will get normalized here) (range goes between -1 - 1).

### getNormalizeAttributes

    public boolean getNormalizeAttributes()

  Returns:
    The flag for normalizing attributes.

### setNominalToBinaryFilter

    public void setNominalToBinaryFilter(boolean f)

  Parameters:
    `f` - True if a nominalToBinary filter should be used on the data.

### getNominalToBinaryFilter

    public boolean getNominalToBinaryFilter()

  Returns:
    The flag for nominal to binary filter use.

### setSeed

    public void setSeed(int l)

  This seeds the random number generator, that is used when a random number is needed for the network.

  Specified by:
    `setSeed` in interface `Randomizable`
  Parameters:
    `l` - The seed.

### getSeed

    public int getSeed()

  Description copied from interface: `Randomizable`
  Gets the seed for the random number generations

  Specified by:
    `getSeed` in interface `Randomizable`
  Returns:
    The seed for the random number generator.

### setValidationThreshold

    public void setValidationThreshold(int t)

  This sets the threshold to use for when validation testing is being done. It works by ending testing once the error on the validation set has consecutively increased a certain number of times.

  Parameters:
    `t` - The threshold to use for this.

### getValidationThreshold

    public int getValidationThreshold()

  Returns:
    The threshold used for validation testing.

### setLearningRate

    public void setLearningRate(double l)

  The learning rate can be set using this command. NOTE That this is a static variable so it affect all networks that are running. Must be greater than 0 and no more than 1.

  Parameters:
    `l` - The New learning rate.

### getLearningRate

    public double getLearningRate()

  Returns:
    The learning rate for the nodes.

### setMomentum

    public void setMomentum(double m)

  The momentum can be set using this command. THE same conditions apply to this as to the learning rate.

  Parameters:
    `m` - The new Momentum.

### getMomentum

    public double getMomentum()

  Returns:
    The momentum for the nodes.

### setAutoBuild

    public void setAutoBuild(boolean a)

  This will set whether the network is automatically built or if it is left up to the user. (there is nothing to stop a user from altering an autobuilt network however).

  Parameters:
    `a` - True if the network should be auto built.

### getAutoBuild

    public boolean getAutoBuild()

  Returns:
    The auto build state.

### setHiddenLayers

    public void setHiddenLayers(java.lang.String h)

  This will set what the hidden layers are made up of when auto build is enabled. Note to have no hidden units, just put a single 0, Any more 0's will indicate that the string is badly formed and make it unaccepted. Negative numbers, and floats will do the same. There are also some wildcards. These are 'a' = (number of attributes + number of classes) / 2, 'i' = number of attributes, 'o' = number of classes, and 't' = number of attributes + number of classes.

  Parameters:
    `h` - A string with a comma seperated list of numbers. Each number is the number of nodes to be on a hidden layer.

### getHiddenLayers

    public java.lang.String getHiddenLayers()

  Returns:
    A string representing the hidden layers, each number is the number of nodes on a hidden layer.

### setGUI

    public void setGUI(boolean a)

  This will set whether A GUI is brought up to allow interaction by the user with the neural network during training.

  Parameters:
    `a` - True if gui should be created.

### getGUI

    public boolean getGUI()

  Returns:
    The true if should show gui.

### setValidationSetSize

    public void setValidationSetSize(int a)

  This will set the size of the validation set.

  Parameters:
    `a` - The size of the validation set, as a percentage of the whole.

### getValidationSetSize

    public int getValidationSetSize()

  Returns:
    The percentage size of the validation set.

### setTrainingTime

    public void setTrainingTime(int n)

  Set the number of training epochs to perform. Must be greater than 0.

  Parameters:
    `n` - The number of epochs to train through.

### getTrainingTime

    public int getTrainingTime()

  Returns:
    The number of epochs to train through.

### blocker

    public void blocker(boolean tf)

  A function used to stop the code that called buildclassifier from continuing on before the user has finished the decision tree.

  Parameters:
    `tf` - True to stop the thread, False to release the thread that is waiting there (if one).

### getCapabilities

    public Capabilities getCapabilities()

  Returns default capabilities of the classifier.

  Specified by:
    `getCapabilities` in interface `CapabilitiesHandler`
  Overrides:
    `getCapabilities` in class `Classifier`
  Returns:
    the capabilities of this classifier
  See Also:
    `Capabilities`

### buildClassifier

    public void buildClassifier(Instances i)
                         throws java.lang.Exception

  Call this function to build and train a neural network for the training data provided.

  Specified by:
    `buildClassifier` in class `Classifier`
  Parameters:
    `i` - The training data.
  Throws:
    `java.lang.Exception` - if can't build classification properly.

### distributionForInstance

    public double[] distributionForInstance(Instance i)
                                     throws java.lang.Exception

  Call this function to predict the class of an instance once a classification model has been built with the buildClassifier call.

  Overrides:
    `distributionForInstance` in class `Classifier`
  Parameters:
    `i` - The instance to classify.
  Returns:
    A double array filled with the probabilities of each class type.
  Throws:
    `java.lang.Exception` - if can't classify instance.

### 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:

       -L <learning rate>
        Learning Rate for the backpropagation algorithm.
        (Value should be between 0 - 1, Default = 0.3).

       -M <momentum>
        Momentum Rate for the backpropagation algorithm.
        (Value should be between 0 - 1, Default = 0.2).

       -N <number of epochs>
        Number of epochs to train through.
        (Default = 500).

       -V <percentage size of validation set>
        Percentage size of validation set to use to terminate
        training (if this is non zero it can pre-empt num of epochs.
        (Value should be between 0 - 100, Default = 0).

       -S <seed>
        The value used to seed the random number generator
        (Value should be >= 0 and and a long, Default = 0).

       -E <threshold for number of consequetive errors>
        The consequetive number of errors allowed for validation
        testing before the netwrok terminates.
        (Value should be > 0, Default = 20).

       -G
        GUI will be opened.
        (Use this to bring up a GUI).

       -A
        Autocreation of the network connections will NOT be done.
        (This will be ignored if -G is NOT set)

       -B
        A NominalToBinary filter will NOT automatically be used.
        (Set this to not use a NominalToBinary filter).

       -H <comma seperated numbers for nodes on each layer>
        The hidden layers to be created for the network.
        (Value should be a list of comma separated Natural
        numbers or the letters 'a' = (attribs + classes) / 2,
        'i' = attribs, 'o' = classes, 't' = attribs .+ classes)
        for wildcard values, Default = a).

       -C
        Normalizing a numeric class will NOT be done.
        (Set this to not normalize the class if it's numeric).

       -I
        Normalizing the attributes will NOT be done.
        (Set this to not normalize the attributes).

       -R
        Reseting the network will NOT be allowed.
        (Set this to not allow the network to reset).

       -D
        Learning rate decay will occur.
        (Set this to cause the learning rate to decay).

  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 NeuralNet.

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

### toString

    public java.lang.String toString()

  Overrides:
    `toString` in class `java.lang.Object`
  Returns:
    string describing the model.

### globalInfo

    public java.lang.String globalInfo()

  This will return a string describing the classifier.

  Returns:
    The string.

### learningRateTipText

    public java.lang.String learningRateTipText()

  Returns:
    a string to describe the learning rate option.

### momentumTipText

    public java.lang.String momentumTipText()

  Returns:
    a string to describe the momentum option.

### autoBuildTipText

    public java.lang.String autoBuildTipText()

  Returns:
    a string to describe the AutoBuild option.

### seedTipText

    public java.lang.String seedTipText()

  Returns:
    a string to describe the random seed option.

### validationThresholdTipText

    public java.lang.String validationThresholdTipText()

  Returns:
    a string to describe the validation threshold option.

### GUITipText

    public java.lang.String GUITipText()

  Returns:
    a string to describe the GUI option.

### validationSetSizeTipText

    public java.lang.String validationSetSizeTipText()

  Returns:
    a string to describe the validation size option.

### trainingTimeTipText

    public java.lang.String trainingTimeTipText()

  Returns:
    a string to describe the learning rate option.

### nominalToBinaryFilterTipText

    public java.lang.String nominalToBinaryFilterTipText()

  Returns:
    a string to describe the nominal to binary option.

### hiddenLayersTipText

    public java.lang.String hiddenLayersTipText()

  Returns:
    a string to describe the hidden layers in the network.

### normalizeNumericClassTipText

    public java.lang.String normalizeNumericClassTipText()

  Returns:
    a string to describe the nominal to binary option.

### normalizeAttributesTipText

    public java.lang.String normalizeAttributesTipText()

  Returns:
    a string to describe the nominal to binary option.

### resetTipText

    public java.lang.String resetTipText()

  Returns:
    a string to describe the Reset option.

### decayTipText

    public java.lang.String decayTipText()

  Returns:
    a string to describe the Decay option.

### getRevision

    public java.lang.String getRevision()

  Returns the revision string.

  Specified by:
    `getRevision` in interface `RevisionHandler`
  Overrides:
    `getRevision` in class `Classifier`
  Returns:
    the revision

Overview | Package | Class | Tree | Deprecated | Index | Help | Weka's home
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD