VTK
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;
114  static vtkKMeansStatistics* New();
115 
117 
120  virtual void SetDistanceFunctor(vtkKMeansDistanceFunctor*);
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:
171  ~vtkKMeansStatistics() override;
172 
176  void Learn(vtkTable*, vtkTable*, vtkMultiBlockDataSet*) override;
177 
181  void Derive(vtkMultiBlockDataSet*) override;
182 
186  void Assess(vtkTable*, vtkMultiBlockDataSet*, vtkTable*) override;
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 
214  virtual vtkIdType GetTotalNumberOfObservations(vtkIdType numObservations);
215 
222  int InitializeDataAndClusterCenters(vtkTable* inParameters, vtkTable* inData,
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
vtkStatisticsAlgorithm.h
vtkX3D::value
Definition: vtkX3D.h:226
vtkKMeansStatistics::Aggregate
void Aggregate(vtkDataObjectCollection *, vtkMultiBlockDataSet *) override
Given a collection of models, calculate aggregate model NB: not implemented.
Definition: vtkKMeansStatistics.h:162
vtkIdType
int vtkIdType
Definition: vtkType.h:343
vtkDataObjectCollection
maintain an unordered list of data objects
Definition: vtkDataObjectCollection.h:31
vtkTable
A table, which contains similar-typed columns of data.
Definition: vtkTable.h:62
vtkKMeansDistanceFunctor
measure distance from k-means cluster centers
Definition: vtkKMeansDistanceFunctor.h:23
vtkKMeansStatistics::DefaultNumberOfClusters
int DefaultNumberOfClusters
This is the default number of clusters used when the user does not provide initial cluster centers.
Definition: vtkKMeansStatistics.h:239
vtkKMeansStatistics::Tolerance
double Tolerance
This is the percentage of data elements that swap cluster IDs.
Definition: vtkKMeansStatistics.h:253
vtkMultiBlockDataSet
Composite dataset that organizes datasets into blocks.
Definition: vtkMultiBlockDataSet.h:45
vtkKMeansStatistics::DistanceFunctor
vtkKMeansDistanceFunctor * DistanceFunctor
This is the Distance functor.
Definition: vtkKMeansStatistics.h:258
vtkKMeansStatistics::KValuesArrayName
char * KValuesArrayName
This is the name of the column that specifies the number of clusters in each run.
Definition: vtkKMeansStatistics.h:244
vtkKMeansStatistics::MaxNumIterations
int MaxNumIterations
This is the maximum number of iterations allowed if the new cluster centers have not yet converged.
Definition: vtkKMeansStatistics.h:249
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkIntArray
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:39
vtkVariant
A atomic type representing the union of many types.
Definition: vtkVariant.h:65
vtkStatisticsAlgorithm::Learn
virtual void Learn(vtkTable *, vtkTable *, vtkMultiBlockDataSet *)=0
Execute the calculations required by the Learn option, given some input Data.
vtkStatisticsAlgorithm::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkStatisticsAlgorithm::SetParameter
virtual bool SetParameter(const char *parameter, int index, vtkVariant value)
A convenience method (in particular for access from other applications) to set parameter values of Le...
vtkIdTypeArray
dynamic, self-adjusting array of vtkIdType
Definition: vtkIdTypeArray.h:35
vtkStatisticsAlgorithm::Assess
virtual void Assess(vtkTable *, vtkMultiBlockDataSet *, vtkTable *)=0
Execute the calculations required by the Assess option.
vtkStatisticsAlgorithm::SelectAssessFunctor
virtual void SelectAssessFunctor(vtkTable *outData, vtkDataObject *inMeta, vtkStringArray *rowNames, AssessFunctor *&dfunc)=0
A pure virtual method to select the appropriate assessment functor.
vtkStatisticsAlgorithm::Derive
virtual void Derive(vtkMultiBlockDataSet *)=0
Execute the calculations required by the Derive option.
vtkStringArray
a vtkAbstractArray subclass for strings
Definition: vtkStringArray.h:36
vtkKMeansStatistics
A class for KMeans clustering.
Definition: vtkKMeansStatistics.h:109
vtkDoubleArray
dynamic, self-adjusting array of double
Definition: vtkDoubleArray.h:35
vtkStatisticsAlgorithm
Base class for statistics algorithms.
Definition: vtkStatisticsAlgorithm.h:71
vtkX3D::parameter
Definition: vtkX3D.h:449
vtkDataObject
general representation of visualization data
Definition: vtkDataObject.h:58
vtkKMeansStatistics::Test
void Test(vtkTable *, vtkMultiBlockDataSet *, vtkTable *) override
Execute the calculations required by the Test option.
Definition: vtkKMeansStatistics.h:191
vtkX3D::index
Definition: vtkX3D.h:252
vtkTableAlgorithm::New
static vtkTableAlgorithm * New()