Class LWL

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

    public class LWL
    extends SingleClassifierEnhancer
    implements UpdateableClassifier, WeightedInstancesHandler, TechnicalInformationHandler
    Locally weighted learning. Uses an instance-based algorithm to assign instance weights which are then used by a specified WeightedInstancesHandler.
    Can do classification (e.g. using naive Bayes) or regression (e.g. using linear regression).

    For more info, see

    Eibe Frank, Mark Hall, Bernhard Pfahringer: Locally Weighted Naive Bayes. In: 19th Conference in Uncertainty in Artificial Intelligence, 249-256, 2003.

    C. Atkeson, A. Moore, S. Schaal (1996). Locally weighted learning. AI Review..

    BibTeX:

     @inproceedings{Frank2003,
        author = {Eibe Frank and Mark Hall and Bernhard Pfahringer},
        booktitle = {19th Conference in Uncertainty in Artificial Intelligence},
        pages = {249-256},
        publisher = {Morgan Kaufmann},
        title = {Locally Weighted Naive Bayes},
        year = {2003}
     }
     
     @article{Atkeson1996,
        author = {C. Atkeson and A. Moore and S. Schaal},
        journal = {AI Review},
        title = {Locally weighted learning},
        year = {1996}
     }
     

    Valid options are:

     -A
      The nearest neighbour search algorithm to use (default: weka.core.neighboursearch.LinearNNSearch).
     
     -K <number of neighbours>
      Set the number of neighbours used to set the kernel bandwidth.
      (default all)
     -U <number of weighting method>
      Set the weighting kernel shape to use. 0=Linear, 1=Epanechnikov,
      2=Tricube, 3=Inverse, 4=Gaussian.
      (default 0 = Linear)
     -D
      If set, classifier is run in debug mode and
      may output additional info to the console
     -W
      Full name of base classifier.
      (default: weka.classifiers.trees.DecisionStump)
     
     Options specific to classifier weka.classifiers.trees.DecisionStump:
     
     -D
      If set, classifier is run in debug mode and
      may output additional info to the console
    Version:
    $Revision: 5011 $
    Author:
    Len Trigg (trigg@cs.waikato.ac.nz), Eibe Frank (eibe@cs.waikato.ac.nz), Ashraf M. Kibriya (amk14[at-the-rate]cs[dot]waikato[dot]ac[dot]nz)
    See Also:
    Serialized Form
    • Constructor Detail

      • LWL

        public LWL()
        Constructor.
    • Method Detail

      • globalInfo

        public java.lang.String globalInfo()
        Returns a string describing classifier.
        Returns:
        a description suitable for displaying in the explorer/experimenter gui
      • getTechnicalInformation

        public TechnicalInformation getTechnicalInformation()
        Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.
        Specified by:
        getTechnicalInformation in interface TechnicalInformationHandler
        Returns:
        the technical information about this class
      • enumerateMeasures

        public java.util.Enumeration enumerateMeasures()
        Returns an enumeration of the additional measure names produced by the neighbour search algorithm.
        Returns:
        an enumeration of the measure names
      • getMeasure

        public double getMeasure​(java.lang.String additionalMeasureName)
        Returns the value of the named measure from the neighbour search algorithm.
        Parameters:
        additionalMeasureName - the name of the measure to query for its value
        Returns:
        the value of the named measure
        Throws:
        java.lang.IllegalArgumentException - if the named measure is not supported
      • setOptions

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

        Valid options are:

         -A
          The nearest neighbour search algorithm to use (default: weka.core.neighboursearch.LinearNNSearch).
         
         -K <number of neighbours>
          Set the number of neighbours used to set the kernel bandwidth.
          (default all)
         -U <number of weighting method>
          Set the weighting kernel shape to use. 0=Linear, 1=Epanechnikov,
          2=Tricube, 3=Inverse, 4=Gaussian.
          (default 0 = Linear)
         -D
          If set, classifier is run in debug mode and
          may output additional info to the console
         -W
          Full name of base classifier.
          (default: weka.classifiers.trees.DecisionStump)
         
         Options specific to classifier weka.classifiers.trees.DecisionStump:
         
         -D
          If set, classifier is run in debug mode and
          may output additional info to the console
        Specified by:
        setOptions in interface OptionHandler
        Overrides:
        setOptions in class SingleClassifierEnhancer
        Parameters:
        options - the list of options as an array of strings
        Throws:
        java.lang.Exception - if an option is not supported
      • KNNTipText

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

        public void setKNN​(int knn)
        Sets the number of neighbours used for kernel bandwidth setting. The bandwidth is taken as the distance to the kth neighbour.
        Parameters:
        knn - the number of neighbours included inside the kernel bandwidth, or 0 to specify using all neighbors.
      • getKNN

        public int getKNN()
        Gets the number of neighbours used for kernel bandwidth setting. The bandwidth is taken as the distance to the kth neighbour.
        Returns:
        the number of neighbours included inside the kernel bandwidth, or 0 for all neighbours
      • weightingKernelTipText

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

        public void setWeightingKernel​(int kernel)
        Sets the kernel weighting method to use. Must be one of LINEAR, EPANECHNIKOV, TRICUBE, INVERSE, GAUSS or CONSTANT, other values are ignored.
        Parameters:
        kernel - the new kernel method to use. Must be one of LINEAR, EPANECHNIKOV, TRICUBE, INVERSE, GAUSS or CONSTANT.
      • getWeightingKernel

        public int getWeightingKernel()
        Gets the kernel weighting method to use.
        Returns:
        the new kernel method to use. Will be one of LINEAR, EPANECHNIKOV, TRICUBE, INVERSE, GAUSS or CONSTANT.
      • nearestNeighbourSearchAlgorithmTipText

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

        public NearestNeighbourSearch getNearestNeighbourSearchAlgorithm()
        Returns the current nearestNeighbourSearch algorithm in use.
        Returns:
        the NearestNeighbourSearch algorithm currently in use.
      • setNearestNeighbourSearchAlgorithm

        public void setNearestNeighbourSearchAlgorithm​(NearestNeighbourSearch nearestNeighbourSearchAlgorithm)
        Sets the nearestNeighbourSearch algorithm to be used for finding nearest neighbour(s).
        Parameters:
        nearestNeighbourSearchAlgorithm - - The NearestNeighbourSearch class.
      • buildClassifier

        public void buildClassifier​(Instances instances)
                             throws java.lang.Exception
        Generates the classifier.
        Specified by:
        buildClassifier in class Classifier
        Parameters:
        instances - set of instances serving as training data
        Throws:
        java.lang.Exception - if the classifier has not been generated successfully
      • updateClassifier

        public void updateClassifier​(Instance instance)
                              throws java.lang.Exception
        Adds the supplied instance to the training set.
        Specified by:
        updateClassifier in interface UpdateableClassifier
        Parameters:
        instance - the instance to add
        Throws:
        java.lang.Exception - if instance could not be incorporated successfully
      • distributionForInstance

        public double[] distributionForInstance​(Instance instance)
                                         throws java.lang.Exception
        Calculates the class membership probabilities for the given test instance.
        Overrides:
        distributionForInstance in class Classifier
        Parameters:
        instance - the instance to be classified
        Returns:
        preedicted class probability distribution
        Throws:
        java.lang.Exception - if distribution can't be computed successfully
      • toString

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

        public static void main​(java.lang.String[] argv)
        Main method for testing this class.
        Parameters:
        argv - the options