Class KDTreeNodeSplitter
- java.lang.Object
-
- moa.classifiers.lazy.neighboursearch.kdtrees.KDTreeNodeSplitter
-
- All Implemented Interfaces:
Serializable
- Direct Known Subclasses:
KMeansInpiredMethod
,MedianOfWidestDimension
,MidPointOfWidestDimension
,SlidingMidPointOfWidestSide
public abstract class KDTreeNodeSplitter extends Object implements Serializable
Class that splits up a KDTreeNode.- Version:
- $Revision: 8034 $
- 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 protected EuclideanDistance
m_EuclideanDistance
The distance function used for building the tree.protected Instances
m_Instances
The instances that'll be used for tree construction.protected int[]
m_InstList
The master index array that'll be reshuffled as nodes are split and the tree is constructed.protected boolean
m_NormalizeNodeWidth
Stores whether if the width of a KDTree node is normalized or not.static int
MAX
Index of max value in an array of attributes' range.static int
MIN
Index of min value in an array of attributes' range.static 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
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected void
correctlyInitialized()
Checks whether an object of this class has been correctly initialized.String[]
getOptions()
Gets the current settings of the object.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.protected int
widestDim(double[][] nodeRanges, double[][] universe)
Returns the widest dimension.
-
-
-
Field Detail
-
m_Instances
protected Instances m_Instances
The instances that'll be used for tree construction.
-
m_EuclideanDistance
protected EuclideanDistance m_EuclideanDistance
The distance function used for building the tree.
-
m_InstList
protected int[] m_InstList
The master index array that'll be reshuffled as nodes are split and the tree is constructed.
-
m_NormalizeNodeWidth
protected boolean m_NormalizeNodeWidth
Stores whether if the width of a KDTree node is normalized or not.
-
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 Detail
-
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 Detail
-
listOptions
public Enumeration listOptions()
Returns an enumeration describing the available options.- Returns:
- an enumeration of all the available options.
-
setOptions
public void setOptions(String[] options) throws Exception
Parses a given list of options.- 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.- Returns:
- an array of strings suitable for passing to setOptions
-
correctlyInitialized
protected void correctlyInitialized() throws Exception
Checks whether an object of this class has been correctly initialized. Performs checks to see if all the necessary things (master index array, training instances, distance function) have been supplied or not.- Throws:
Exception
- If the object has not been correctly initialized.
-
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.
-
widestDim
protected int widestDim(double[][] nodeRanges, double[][] universe)
Returns the widest dimension. The width of each dimension (for the points inside the node) is normalized, if m_NormalizeNodeWidth is set to true.- Parameters:
nodeRanges
- The attributes' range of the points inside the node that is to be split.universe
- The attributes' range for the whole point-space.- Returns:
- The index of the attribute/dimension in which the points of the node have widest spread.
-
-