Package weka.core.neighboursearch.kdtrees

# Class KDTreeNodeSplitter

java.lang.Object
weka.core.neighboursearch.kdtrees.KDTreeNodeSplitter

All Implemented Interfaces:
  `Serializable`, `OptionHandler`, `RevisionHandler`

Direct Known Subclasses:
  `KMeansInpiredMethod`, `MedianOfWidestDimension`, `MidPointOfWidestDimension`, `SlidingMidPointOfWidestSide`

public abstract class KDTreeNodeSplitter extends Object implements Serializable, OptionHandler, RevisionHandler
Class that splits up a KDTreeNode.

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

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`MAX`
Index of max value in an array of attributes' range.
`static final int`
`MIN`
Index of min value in an array of attributes' range.
`static final int`
`WIDTH`
Index of width value (max-min) in an array of attributes' range.

## Constructor Summary

Constructors
Constructor
Description
`KDTreeNodeSplitter()`
default constructor.
`KDTreeNodeSplitter(int[] instList, Instances insts, EuclideanDistance e)`
Creates a new instance of KDTreeNodeSplitter.

## Method Summary

Modifier and Type
Method
Description
`String[]`
`getOptions()`
Gets the current settings of the object.
`String`
`getRevision()`
Returns the revision string.
`Enumeration`
`listOptions()`
Returns an enumeration describing the available options.
`void`
`setEuclideanDistanceFunction(EuclideanDistance func)`
Sets the EuclideanDistance object to use for splitting nodes.
`void`
`setInstanceList(int[] instList)`
Sets the master index array containing indices of the training instances.
`void`
`setInstances(Instances inst)`
Sets the training instances on which the tree is (or is to be) built.
`void`
`setNodeWidthNormalization(boolean normalize)`
Sets whether if a nodes region is normalized or not.
`void`
`setOptions(String[] options)`
Parses a given list of options.
`abstract void`
`splitNode(KDTreeNode node, int numNodesCreated, double[][] nodeRanges, double[][] universe)`
Splits a node into two.

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### MIN

public static final int MIN
Index of min value in an array of attributes' range.

See Also:
  - Constant Field Values

### MAX

public static final int MAX
Index of max value in an array of attributes' range.

See Also:
  - Constant Field Values

### WIDTH

public static final int WIDTH
Index of width value (max-min) in an array of attributes' range.

See Also:
  - Constant Field Values

## Constructor Details

### KDTreeNodeSplitter

public KDTreeNodeSplitter()
default constructor.

### KDTreeNodeSplitter

public KDTreeNodeSplitter(int[] instList, Instances insts, EuclideanDistance e)
Creates a new instance of KDTreeNodeSplitter.

Parameters:
  `instList` - Reference of the master index array.
  `insts` - The set of training instances on which the tree is built.
  `e` - The EuclideanDistance object that is used in tree contruction.

## Method Details

### listOptions

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

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

### setOptions

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

Specified by:
  `setOptions` in interface `OptionHandler`
Parameters:
  `options` - the list of options as an array of strings
Throws:
  `Exception` - if an option is not supported

### getOptions

public String[] getOptions()
Gets the current settings of the object.

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

### splitNode

public abstract void splitNode(KDTreeNode node, int numNodesCreated, double[][] nodeRanges, double[][] universe) throws Exception
Splits a node into two. After splitting two new nodes are created and correctly initialised. And, node.left and node.right are set appropriately.

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:
  `Exception` - If there is some problem in splitting the given node.

### setInstances

public void setInstances(Instances inst)
Sets the training instances on which the tree is (or is to be) built.

Parameters:
  `inst` - The training instances.

### setInstanceList

public void setInstanceList(int[] instList)
Sets the master index array containing indices of the training instances. This array will be rearranged as the tree is built, so that each node is assigned a portion in this array which contain the instances insides the node's region.

Parameters:
  `instList` - The master index array.

### setEuclideanDistanceFunction

public void setEuclideanDistanceFunction(EuclideanDistance func)
Sets the EuclideanDistance object to use for splitting nodes.

Parameters:
  `func` - The EuclideanDistance object.

### setNodeWidthNormalization

public void setNodeWidthNormalization(boolean normalize)
Sets whether if a nodes region is normalized or not. If set to true then, when selecting the widest attribute/dimension for splitting, the width of each attribute/dimension, of the points inside the node's region, is divided by the width of that attribute/dimension for the whole point-space. Thus, each attribute/dimension of that node is normalized.

Parameters:
  `normalize` - Should be true if normalization is required.

### getRevision

public String getRevision()
Returns the revision string.

Specified by:
  `getRevision` in interface `RevisionHandler`
Returns:
  the revision