#include <vtkKMeansDistanceFunctor.h>
This is an abstract class (with a default concrete subclass) that implements algorithms used by the vtkKMeansStatistics filter that rely on a distance metric. If you wish to use a non-Euclidean distance metric (this could include working with strings that do not have a Euclidean distance metric, implementing k-mediods, or trying distance metrics in norms other than L2), you should subclass vtkKMeansDistanceFunctor.
Definition at line 21 of file vtkKMeansDistanceFunctor.h.
Public Types | |
typedef vtkObject | Superclass |
Public Member Functions | |
virtual const char * | GetClassName () |
virtual int | IsA (const char *type) |
virtual void | PrintSelf (ostream &os, vtkIndent indent) |
virtual vtkVariantArray * | GetEmptyTuple (vtkIdType dimension) |
virtual void | operator() (double &, vtkVariantArray *, vtkVariantArray *) |
virtual void | PairwiseUpdate (vtkTable *clusterCenters, vtkIdType row, vtkVariantArray *data, vtkIdType dataCardinality, vtkIdType totalCardinality) |
virtual void | PerturbElement (vtkTable *, vtkTable *, vtkIdType, vtkIdType, vtkIdType, double) |
virtual void * | AllocateElementArray (vtkIdType size) |
virtual void | DeallocateElementArray (void *) |
virtual vtkAbstractArray * | CreateCoordinateArray () |
virtual void | PackElements (vtkTable *curTable, void *vElements) |
virtual int | GetDataType () |
virtual void | UnPackElements (vtkTable *curTable, vtkTable *newTable, void *vLocalElements, void *vGlobalElements, int np) |
virtual void | UnPackElements (vtkTable *curTable, void *vLocalElements, vtkIdType numRows, vtkIdType numCols) |
Static Public Member Functions | |
static vtkKMeansDistanceFunctor * | New () |
static int | IsTypeOf (const char *type) |
static vtkKMeansDistanceFunctor * | SafeDownCast (vtkObject *o) |
Protected Member Functions | |
vtkKMeansDistanceFunctor () | |
virtual | ~vtkKMeansDistanceFunctor () |
Protected Attributes | |
vtkVariantArray * | EmptyTuple |
vtkTable * | CenterUpdates |
Reimplemented from vtkObject.
Reimplemented in vtkKMeansDistanceFunctorCalculator.
Definition at line 25 of file vtkKMeansDistanceFunctor.h.
vtkKMeansDistanceFunctor::vtkKMeansDistanceFunctor | ( | ) | [protected] |
virtual vtkKMeansDistanceFunctor::~vtkKMeansDistanceFunctor | ( | ) | [protected, virtual] |
static vtkKMeansDistanceFunctor* vtkKMeansDistanceFunctor::New | ( | ) | [static] |
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
Reimplemented from vtkObject.
Reimplemented in vtkKMeansDistanceFunctorCalculator.
virtual const char* vtkKMeansDistanceFunctor::GetClassName | ( | ) | [virtual] |
static int vtkKMeansDistanceFunctor::IsTypeOf | ( | const char * | name | ) | [static] |
Return 1 if this class type is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.
Reimplemented from vtkObject.
Reimplemented in vtkKMeansDistanceFunctorCalculator.
virtual int vtkKMeansDistanceFunctor::IsA | ( | const char * | name | ) | [virtual] |
Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.
Reimplemented from vtkObject.
Reimplemented in vtkKMeansDistanceFunctorCalculator.
static vtkKMeansDistanceFunctor* vtkKMeansDistanceFunctor::SafeDownCast | ( | vtkObject * | o | ) | [static] |
virtual void vtkKMeansDistanceFunctor::PrintSelf | ( | ostream & | os, | |
vtkIndent | indent | |||
) | [virtual] |
Methods invoked by print to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.
Reimplemented from vtkObject.
Reimplemented in vtkKMeansDistanceFunctorCalculator.
virtual vtkVariantArray* vtkKMeansDistanceFunctor::GetEmptyTuple | ( | vtkIdType | dimension | ) | [virtual] |
Return an empty tuple. These values are used as cluster center coordinates when no initial cluster centers are specified.
virtual void vtkKMeansDistanceFunctor::operator() | ( | double & | , | |
vtkVariantArray * | , | |||
vtkVariantArray * | ||||
) | [virtual] |
Compute the distance from one observation to another, returning the distance in the first argument.
Reimplemented in vtkKMeansDistanceFunctorCalculator.
virtual void vtkKMeansDistanceFunctor::PairwiseUpdate | ( | vtkTable * | clusterCenters, | |
vtkIdType | row, | |||
vtkVariantArray * | data, | |||
vtkIdType | dataCardinality, | |||
vtkIdType | totalCardinality | |||
) | [virtual] |
This is called once per observation per run per iteration in order to assign the observation to its nearest cluster center after the distance functor has been evaluated for all the cluster centers. The distance functor is responsible for incrementally updating the cluster centers to account for the assignment.
virtual void vtkKMeansDistanceFunctor::PerturbElement | ( | vtkTable * | , | |
vtkTable * | , | |||
vtkIdType | , | |||
vtkIdType | , | |||
vtkIdType | , | |||
double | ||||
) | [virtual] |
When a cluster center (1) has no observations that are closer to it than other cluster centers or (2) has exactly the same coordinates as another cluster center, its coordinates should be perturbed. This function should perform that perturbation. Since perturbation relies on a distance metric, this function is the responsibility of the distance functor.
virtual void* vtkKMeansDistanceFunctor::AllocateElementArray | ( | vtkIdType | size | ) | [virtual] |
Allocate an array large enough to hold size coordinates and return a void pointer to this array. This is used by vtkPKMeansStatistics to send (receive) cluster center coordinates to (from) other processes.
virtual void vtkKMeansDistanceFunctor::DeallocateElementArray | ( | void * | ) | [virtual] |
Free an array allocated with AllocateElementArray.
virtual vtkAbstractArray* vtkKMeansDistanceFunctor::CreateCoordinateArray | ( | ) | [virtual] |
Return a vtkAbstractArray capable of holding cluster center coordinates. This is used by vtkPKMeansStatistics to hold cluster center coordinates sent to (received from) other processes.
virtual void vtkKMeansDistanceFunctor::PackElements | ( | vtkTable * | curTable, | |
void * | vElements | |||
) | [virtual] |
Pack the cluster center coordinates in vElements into columns of curTable. This code may assume that the columns in curTable are all of the type returned by GetNewVTKArray().
virtual void vtkKMeansDistanceFunctor::UnPackElements | ( | vtkTable * | curTable, | |
vtkTable * | newTable, | |||
void * | vLocalElements, | |||
void * | vGlobalElements, | |||
int | np | |||
) | [virtual] |
Unpack the cluster center coordinates in vElements into columns of curTable. This code may assume that the columns in curTable are all of the type returned by GetNewVTKArray().
virtual void vtkKMeansDistanceFunctor::UnPackElements | ( | vtkTable * | curTable, | |
void * | vLocalElements, | |||
vtkIdType | numRows, | |||
vtkIdType | numCols | |||
) | [virtual] |
Unpack the cluster center coordinates in vElements into columns of curTable. This code may assume that the columns in curTable are all of the type returned by GetNewVTKArray().
virtual int vtkKMeansDistanceFunctor::GetDataType | ( | ) | [virtual] |
Return the data type used to store cluster center coordinates.
vtkVariantArray* vtkKMeansDistanceFunctor::EmptyTuple [protected] |
Definition at line 84 of file vtkKMeansDistanceFunctor.h.
vtkTable* vtkKMeansDistanceFunctor::CenterUpdates [protected] |
Definition at line 85 of file vtkKMeansDistanceFunctor.h.