weka.core.neighboursearch.kdtrees
Class KMeansInpiredMethod

java.lang.Object
  extended by weka.core.neighboursearch.kdtrees.KDTreeNodeSplitter
      extended by weka.core.neighboursearch.kdtrees.KMeansInpiredMethod
All Implemented Interfaces:
java.io.Serializable, OptionHandler, TechnicalInformationHandler

public class KMeansInpiredMethod
extends KDTreeNodeSplitter
implements TechnicalInformationHandler

The class that splits a node into two such that the overall sum of squared distances of points to their centres on both sides of the (axis-parallel) splitting plane is minimum.

For more information see also:

Ashraf Masood Kibriya (2007). Fast Algorithms for Nearest Neighbour Search. Hamilton, New Zealand.

BibTeX:

 @mastersthesis{Kibriya2007,
    address = {Hamilton, New Zealand},
    author = {Ashraf Masood Kibriya},
    school = {Department of Computer Science, School of Computing and Mathematical Sciences, University of Waikato},
    title = {Fast Algorithms for Nearest Neighbour Search},
    year = {2007}
 }
 

Version:
$Revision: 1.1 $
Author:
Ashraf M. Kibriya (amk14[at-the-rate]cs[dot]waikato[dot]ac[dot]nz)
See Also:
Serialized Form

Field Summary
 
Fields inherited from class weka.core.neighboursearch.kdtrees.KDTreeNodeSplitter
MAX, MIN, WIDTH
 
Constructor Summary
KMeansInpiredMethod()
           
 
Method Summary
 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.
 java.lang.String globalInfo()
          Returns a string describing this nearest neighbour search algorithm.
 void splitNode(KDTreeNode node, int numNodesCreated, double[][] nodeRanges, double[][] universe)
          Splits a node into two such that the overall sum of squared distances of points to their centres on both sides of the (axis-parallel) splitting plane is minimum.
 
Methods inherited from class weka.core.neighboursearch.kdtrees.KDTreeNodeSplitter
getOptions, listOptions, setEuclideanDistanceFunction, setInstanceList, setInstances, setNodeWidthNormalization, setOptions
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

KMeansInpiredMethod

public KMeansInpiredMethod()
Method Detail

globalInfo

public java.lang.String globalInfo()
Returns a string describing this nearest neighbour search algorithm.

Returns:
a description of the algorithm 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

splitNode

public void splitNode(KDTreeNode node,
                      int numNodesCreated,
                      double[][] nodeRanges,
                      double[][] universe)
               throws java.lang.Exception
Splits a node into two such that the overall sum of squared distances of points to their centres on both sides of the (axis-parallel) splitting plane is minimum. The two nodes created after the whole splitting are correctly initialised. And, node.left and node.right are set appropriately.

Specified by:
splitNode in class KDTreeNodeSplitter
Parameters:
node - The node to split.
numNodesCreated - The number of nodes that so far have been created for the tree, so that the newly created nodes are assigned correct/meaningful node numbers/ids.
nodeRanges - The attributes' range for the points inside the node that is to be split.
universe - The attributes' range for the whole point-space.
Throws:
java.lang.Exception - If there is some problem in splitting the given node.