measure distance from k-means cluster centers
More...
#include <vtkKMeansDistanceFunctor.h>
|
virtual int | IsA (const char *type) |
|
vtkKMeansDistanceFunctor * | NewInstance () const |
|
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) |
|
measure distance from k-means cluster centers
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 22 of file vtkKMeansDistanceFunctor.h.
vtkKMeansDistanceFunctor::vtkKMeansDistanceFunctor |
( |
| ) |
|
|
protected |
virtual vtkKMeansDistanceFunctor::~vtkKMeansDistanceFunctor |
( |
| ) |
|
|
protectedvirtual |
static int vtkKMeansDistanceFunctor::IsTypeOf |
( |
const char * |
type | ) |
|
|
static |
virtual int vtkKMeansDistanceFunctor::IsA |
( |
const char * |
type | ) |
|
|
virtual |
virtual vtkObjectBase* vtkKMeansDistanceFunctor::NewInstanceInternal |
( |
| ) |
const |
|
protectedvirtual |
virtual void vtkKMeansDistanceFunctor::PrintSelf |
( |
ostream & |
os, |
|
|
vtkIndent |
indent |
|
) |
| |
|
virtual |
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 |
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 |
vtkTable* vtkKMeansDistanceFunctor::CenterUpdates |
|
protected |
The documentation for this class was generated from the following file: