VTK  9.0.2
vtkKMeansStatistics.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3 Program: Visualization Toolkit
4 Module: vtkKMeansStatistics.h
5 
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 /*-------------------------------------------------------------------------
16  Copyright 2010 Sandia Corporation.
17  Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
18  the U.S. Government retains certain rights in this software.
19  -------------------------------------------------------------------------*/
97 #ifndef vtkKMeansStatistics_h
98 #define vtkKMeansStatistics_h
99 
100 #include "vtkFiltersStatisticsModule.h" // For export macro
101 #include "vtkStatisticsAlgorithm.h"
102 
103 class vtkIdTypeArray;
104 class vtkIntArray;
105 class vtkDoubleArray;
108 
109 class VTKFILTERSSTATISTICS_EXPORT vtkKMeansStatistics : public vtkStatisticsAlgorithm
110 {
111 public:
113  void PrintSelf(ostream& os, vtkIndent indent) override;
115 
117 
121  vtkGetObjectMacro(DistanceFunctor, vtkKMeansDistanceFunctor);
123 
125 
128  vtkSetMacro(DefaultNumberOfClusters, int);
129  vtkGetMacro(DefaultNumberOfClusters, int);
131 
133 
136  vtkSetStringMacro(KValuesArrayName);
137  vtkGetStringMacro(KValuesArrayName);
139 
141 
145  vtkSetMacro(MaxNumIterations, int);
146  vtkGetMacro(MaxNumIterations, int);
148 
150 
154  vtkSetMacro(Tolerance, double);
155  vtkGetMacro(Tolerance, double);
157 
163 
167  bool SetParameter(const char* parameter, int index, vtkVariant value) override;
168 
169 protected:
172 
177 
181  void Derive(vtkMultiBlockDataSet*) override;
182 
187 
191  void Test(vtkTable*, vtkMultiBlockDataSet*, vtkTable*) override { return; }
192 
196  void SelectAssessFunctor(vtkTable* inData, vtkDataObject* inMeta, vtkStringArray* rowNames,
197  AssessFunctor*& dfunc) override;
198 
204  virtual void UpdateClusterCenters(vtkTable* newClusterElements, vtkTable* curClusterElements,
205  vtkIdTypeArray* numMembershipChanges, vtkIdTypeArray* numElementsInCluster,
206  vtkDoubleArray* error, vtkIdTypeArray* startRunID, vtkIdTypeArray* endRunID,
207  vtkIntArray* computeRun);
208 
215 
223  vtkTable* dataElements, vtkIdTypeArray* numberOfClusters, vtkTable* curClusterElements,
224  vtkTable* newClusterElements, vtkIdTypeArray* startRunID, vtkIdTypeArray* endRunID);
225 
231  virtual void CreateInitialClusterCenters(vtkIdType numToAllocate,
232  vtkIdTypeArray* numberOfClusters, vtkTable* inData, vtkTable* curClusterElements,
233  vtkTable* newClusterElements);
234 
253  double Tolerance;
259 
260 private:
261  vtkKMeansStatistics(const vtkKMeansStatistics&) = delete;
262  void operator=(const vtkKMeansStatistics&) = delete;
263 };
264 
265 #endif
maintain an unordered list of data objects
general representation of visualization data
Definition: vtkDataObject.h:60
dynamic, self-adjusting array of double
dynamic, self-adjusting array of vtkIdType
a simple class to control print indentation
Definition: vtkIndent.h:34
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:40
measure distance from k-means cluster centers
A class for KMeans clustering.
int MaxNumIterations
This is the maximum number of iterations allowed if the new cluster centers have not yet converged.
void SelectAssessFunctor(vtkTable *inData, vtkDataObject *inMeta, vtkStringArray *rowNames, AssessFunctor *&dfunc) override
Provide the appropriate assessment functor.
void Aggregate(vtkDataObjectCollection *, vtkMultiBlockDataSet *) override
Given a collection of models, calculate aggregate model NB: not implemented.
char * KValuesArrayName
This is the name of the column that specifies the number of clusters in each run.
void Learn(vtkTable *, vtkTable *, vtkMultiBlockDataSet *) override
Execute the calculations required by the Learn option.
vtkKMeansDistanceFunctor * DistanceFunctor
This is the Distance functor.
bool SetParameter(const char *parameter, int index, vtkVariant value) override
A convenience method for setting properties by name.
virtual vtkIdType GetTotalNumberOfObservations(vtkIdType numObservations)
Subroutine to get the total number of observations.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int DefaultNumberOfClusters
This is the default number of clusters used when the user does not provide initial cluster centers.
void Derive(vtkMultiBlockDataSet *) override
Execute the calculations required by the Derive option.
void Assess(vtkTable *, vtkMultiBlockDataSet *, vtkTable *) override
Execute the calculations required by the Assess option.
virtual void UpdateClusterCenters(vtkTable *newClusterElements, vtkTable *curClusterElements, vtkIdTypeArray *numMembershipChanges, vtkIdTypeArray *numElementsInCluster, vtkDoubleArray *error, vtkIdTypeArray *startRunID, vtkIdTypeArray *endRunID, vtkIntArray *computeRun)
Subroutine to update new cluster centers from the old centers.
int InitializeDataAndClusterCenters(vtkTable *inParameters, vtkTable *inData, vtkTable *dataElements, vtkIdTypeArray *numberOfClusters, vtkTable *curClusterElements, vtkTable *newClusterElements, vtkIdTypeArray *startRunID, vtkIdTypeArray *endRunID)
Subroutine to initialize the cluster centers using those provided by the user in input port LEARN_PAR...
virtual void CreateInitialClusterCenters(vtkIdType numToAllocate, vtkIdTypeArray *numberOfClusters, vtkTable *inData, vtkTable *curClusterElements, vtkTable *newClusterElements)
Subroutine to initialize cluster centerss if not provided by the user.
~vtkKMeansStatistics() override
static vtkKMeansStatistics * New()
double Tolerance
This is the percentage of data elements that swap cluster IDs.
void Test(vtkTable *, vtkMultiBlockDataSet *, vtkTable *) override
Execute the calculations required by the Test option.
virtual void SetDistanceFunctor(vtkKMeansDistanceFunctor *)
Set the DistanceFunctor.
Composite dataset that organizes datasets into blocks.
A base class for a functor that assesses data.
Base class for statistics algorithms.
a vtkAbstractArray subclass for strings
A table, which contains similar-typed columns of data.
Definition: vtkTable.h:63
A atomic type representing the union of many types.
Definition: vtkVariant.h:66
@ value
Definition: vtkX3D.h:226
@ parameter
Definition: vtkX3D.h:449
@ index
Definition: vtkX3D.h:252
int vtkIdType
Definition: vtkType.h:338