Class RBFNetwork

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

    public class RBFNetwork
    extends Classifier
    implements OptionHandler
    Class that implements a normalized Gaussian radial basisbasis function network.
    It uses the k-means clustering algorithm to provide the basis functions and learns either a logistic regression (discrete class problems) or linear regression (numeric class problems) on top of that. Symmetric multivariate Gaussians are fit to the data from each cluster. If the class is nominal it uses the given number of clusters per class.It standardizes all numeric attributes to zero mean and unit variance.

    Valid options are:

     -B <number>
      Set the number of clusters (basis functions) to generate. (default = 2).
     -S <seed>
      Set the random seed to be used by K-means. (default = 1).
     -R <ridge>
      Set the ridge value for the logistic or linear regression.
     -M <number>
      Set the maximum number of iterations for the logistic regression. (default -1, until convergence).
     -W <number>
      Set the minimum standard deviation for the clusters. (default 0.1).
    Version:
    $Revision: 1.10 $
    Author:
    Mark Hall, Eibe Frank
    See Also:
    Serialized Form
    • Constructor Detail

      • RBFNetwork

        public RBFNetwork()
    • 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
      • buildClassifier

        public void buildClassifier​(Instances instances)
                             throws java.lang.Exception
        Builds the classifier
        Specified by:
        buildClassifier in class Classifier
        Parameters:
        instances - the training data
        Throws:
        java.lang.Exception - if the classifier could not be built successfully
      • distributionForInstance

        public double[] distributionForInstance​(Instance instance)
                                         throws java.lang.Exception
        Computes the distribution for a given instance
        Overrides:
        distributionForInstance in class Classifier
        Parameters:
        instance - the instance for which distribution is computed
        Returns:
        the distribution
        Throws:
        java.lang.Exception - if the distribution can't be computed successfully
      • toString

        public java.lang.String toString()
        Returns a description of this classifier as a String
        Overrides:
        toString in class java.lang.Object
        Returns:
        a description of this classifier
      • maxItsTipText

        public java.lang.String maxItsTipText()
        Returns the tip text for this property
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • getMaxIts

        public int getMaxIts()
        Get the value of MaxIts.
        Returns:
        Value of MaxIts.
      • setMaxIts

        public void setMaxIts​(int newMaxIts)
        Set the value of MaxIts.
        Parameters:
        newMaxIts - Value to assign to MaxIts.
      • ridgeTipText

        public java.lang.String ridgeTipText()
        Returns the tip text for this property
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • setRidge

        public void setRidge​(double ridge)
        Sets the ridge value for logistic or linear regression.
        Parameters:
        ridge - the ridge
      • getRidge

        public double getRidge()
        Gets the ridge value.
        Returns:
        the ridge
      • numClustersTipText

        public java.lang.String numClustersTipText()
        Returns the tip text for this property
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • setNumClusters

        public void setNumClusters​(int numClusters)
        Set the number of clusters for K-means to generate.
        Parameters:
        numClusters - the number of clusters to generate.
      • getNumClusters

        public int getNumClusters()
        Return the number of clusters to generate.
        Returns:
        the number of clusters to generate.
      • clusteringSeedTipText

        public java.lang.String clusteringSeedTipText()
        Returns the tip text for this property
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • setClusteringSeed

        public void setClusteringSeed​(int seed)
        Set the random seed to be passed on to K-means.
        Parameters:
        seed - a seed value.
      • getClusteringSeed

        public int getClusteringSeed()
        Get the random seed used by K-means.
        Returns:
        the seed value.
      • minStdDevTipText

        public java.lang.String minStdDevTipText()
        Returns the tip text for this property
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • getMinStdDev

        public double getMinStdDev()
        Get the MinStdDev value.
        Returns:
        the MinStdDev value.
      • setMinStdDev

        public void setMinStdDev​(double newMinStdDev)
        Set the MinStdDev value.
        Parameters:
        newMinStdDev - The new MinStdDev value.
      • 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:

         -B <number>
          Set the number of clusters (basis functions) to generate. (default = 2).
         -S <seed>
          Set the random seed to be used by K-means. (default = 1).
         -R <ridge>
          Set the ridge value for the logistic or linear regression.
         -M <number>
          Set the maximum number of iterations for the logistic regression. (default -1, until convergence).
         -W <number>
          Set the minimum standard deviation for the clusters. (default 0.1).
        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
      • main

        public static void main​(java.lang.String[] argv)
        Main method for testing this class.
        Parameters:
        argv - should contain the command line arguments to the scheme (see Evaluation)