Class BallNode
- java.lang.Object
-
- weka.core.neighboursearch.balltrees.BallNode
-
- All Implemented Interfaces:
java.io.Serializable
,RevisionHandler
public class BallNode extends java.lang.Object implements java.io.Serializable, RevisionHandler
Class representing a node of a BallTree.- 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 int
m_End
The end index of the portion of the master index array, which stores indices of the instances/points the node contains.BallNode
m_Left
The left child of the node.int
m_NodeNumber
The node number/id.int
m_NumInstances
The number of instances/points in the node.BallNode
m_Right
The right child of the node.int
m_SplitAttrib
The attribute that splits this node (not always used).double
m_SplitVal
The value of m_SpiltAttrib that splits this node (not always used).int
m_Start
The start index of the portion of the master index array, which stores the indices of the instances/points the node contains.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static Instance
calcCentroidPivot(int[] instList, Instances insts)
Calculates the centroid pivot of a node.static Instance
calcCentroidPivot(int start, int end, int[] instList, Instances insts)
Calculates the centroid pivot of a node.static Instance
calcPivot(BallNode child1, BallNode child2, Instances insts)
Calculates the centroid pivot of a node based on its two child nodes (if merging two nodes).static double
calcRadius(int[] instList, Instances insts, Instance pivot, DistanceFunction distanceFunction)
Calculates the radius of node.static double
calcRadius(int start, int end, int[] instList, Instances insts, Instance pivot, DistanceFunction distanceFunction)
Calculates the radius of a node.static double
calcRadius(BallNode child1, BallNode child2, Instance pivot, DistanceFunction distanceFunction)
Calculates the radius of a node based on its two child nodes (if merging two nodes).Instance
getPivot()
Returns the pivot/centre of the node's ball.double
getRadius()
Returns the radius of the node's ball.java.lang.String
getRevision()
Returns the revision string.boolean
isALeaf()
Returns true if the node is a leaf node (if both its left and right child are null).int
numInstances()
Returns the number of instances in the hyper-spherical region of this node.void
setPivot(Instance pivot)
Sets the pivot/centre of this nodes ball.void
setRadius(double radius)
Sets the radius of the node's ball.void
setStartEndIndices(int start, int end)
Sets the the start and end index of the portion of the master index array that is assigned to this node.
-
-
-
Field Detail
-
m_Start
public int m_Start
The start index of the portion of the master index array, which stores the indices of the instances/points the node contains.
-
m_End
public int m_End
The end index of the portion of the master index array, which stores indices of the instances/points the node contains.
-
m_NumInstances
public int m_NumInstances
The number of instances/points in the node.
-
m_NodeNumber
public int m_NodeNumber
The node number/id.
-
m_SplitAttrib
public int m_SplitAttrib
The attribute that splits this node (not always used).
-
m_SplitVal
public double m_SplitVal
The value of m_SpiltAttrib that splits this node (not always used).
-
m_Left
public BallNode m_Left
The left child of the node.
-
m_Right
public BallNode m_Right
The right child of the node.
-
-
Constructor Detail
-
BallNode
public BallNode(int nodeNumber)
Constructor.- Parameters:
nodeNumber
- The node's number/id.
-
BallNode
public BallNode(int start, int end, int nodeNumber)
Creates a new instance of BallNode.- Parameters:
start
- The begining index of the portion of the master index array belonging to this node.end
- The end index of the portion of the master index array belonging to this node.nodeNumber
- The node's number/id.
-
BallNode
public BallNode(int start, int end, int nodeNumber, Instance pivot, double radius)
Creates a new instance of BallNode.- Parameters:
start
- The begining index of the portion of the master index array belonging to this node.end
- The end index of the portion of the master index array belonging to this node.nodeNumber
- The node's number/id.pivot
- The pivot/centre of the node's ball.radius
- The radius of the node's ball.
-
-
Method Detail
-
isALeaf
public boolean isALeaf()
Returns true if the node is a leaf node (if both its left and right child are null).- Returns:
- true if the node is a leaf node.
-
setStartEndIndices
public void setStartEndIndices(int start, int end)
Sets the the start and end index of the portion of the master index array that is assigned to this node.- Parameters:
start
- The start index of the master index array.end
- The end index of the master indext array.
-
setPivot
public void setPivot(Instance pivot)
Sets the pivot/centre of this nodes ball.- Parameters:
pivot
- The centre/pivot.
-
getPivot
public Instance getPivot()
Returns the pivot/centre of the node's ball.- Returns:
- The ball pivot/centre.
-
setRadius
public void setRadius(double radius)
Sets the radius of the node's ball.- Parameters:
radius
- The radius of the nodes ball.
-
getRadius
public double getRadius()
Returns the radius of the node's ball.- Returns:
- Radius of node's ball.
-
numInstances
public int numInstances()
Returns the number of instances in the hyper-spherical region of this node.- Returns:
- The number of instances in the node.
-
calcCentroidPivot
public static Instance calcCentroidPivot(int[] instList, Instances insts)
Calculates the centroid pivot of a node. The node is given in the form of an indices array that contains the indices of the points inside the node.- Parameters:
instList
- The indices array pointing to the instances in the node.insts
- The actual instances. The instList points to instances in this object.- Returns:
- The calculated centre/pivot of the node.
-
calcCentroidPivot
public static Instance calcCentroidPivot(int start, int end, int[] instList, Instances insts)
Calculates the centroid pivot of a node. The node is given in the form of the portion of an indices array that contains the indices of the points inside the node.- Parameters:
start
- The start index marking the start of the portion belonging to the node.end
- The end index marking the end of the portion in the indices array that belongs to the node.instList
- The indices array pointing to the instances in the node.insts
- The actual instances. The instList points to instances in this object.- Returns:
- The calculated centre/pivot of the node.
-
calcRadius
public static double calcRadius(int[] instList, Instances insts, Instance pivot, DistanceFunction distanceFunction) throws java.lang.Exception
Calculates the radius of node.- Parameters:
instList
- The indices array containing the indices of the instances inside the node.insts
- The actual instances object. instList points to instances in this object.pivot
- The centre/pivot of the node.distanceFunction
- The distance fuction to use to calculate the radius.- Returns:
- The radius of the node.
- Throws:
java.lang.Exception
- If there is some problem in calculating the radius.
-
calcRadius
public static double calcRadius(int start, int end, int[] instList, Instances insts, Instance pivot, DistanceFunction distanceFunction) throws java.lang.Exception
Calculates the radius of a node.- Parameters:
start
- The start index of the portion in indices array that belongs to the node.end
- The end index of the portion in indices array that belongs to the node.instList
- The indices array holding indices of instances.insts
- The actual instances. instList points to instances in this object.pivot
- The centre/pivot of the node.distanceFunction
- The distance function to use to calculate the radius.- Returns:
- The radius of the node.
- Throws:
java.lang.Exception
- If there is some problem calculating the radius.
-
calcPivot
public static Instance calcPivot(BallNode child1, BallNode child2, Instances insts) throws java.lang.Exception
Calculates the centroid pivot of a node based on its two child nodes (if merging two nodes).- Parameters:
child1
- The first child of the node.child2
- The second child of the node.insts
- The set of instances on which the tree is (or is to be) built.- Returns:
- The centre/pivot of the node.
- Throws:
java.lang.Exception
- If there is some problem calculating the pivot.
-
calcRadius
public static double calcRadius(BallNode child1, BallNode child2, Instance pivot, DistanceFunction distanceFunction) throws java.lang.Exception
Calculates the radius of a node based on its two child nodes (if merging two nodes).- Parameters:
child1
- The first child of the node.child2
- The second child of the node.pivot
- The centre/pivot of the node.distanceFunction
- The distance function to use to calculate the radius- Returns:
- The radius of the node.
- Throws:
java.lang.Exception
- If there is some problem in calculating the radius.
-
getRevision
public java.lang.String getRevision()
Returns the revision string.- Specified by:
getRevision
in interfaceRevisionHandler
- Returns:
- the revision
-
-