VTK  9.2.5
vtkKMeansStatistics.h
Go to the documentation of this file.
1/*=========================================================================
2
3Program: Visualization Toolkit
4Module: vtkKMeansStatistics.h
5
6Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7All rights reserved.
8See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10This software is distributed WITHOUT ANY WARRANTY; without even
11the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12PURPOSE. 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 -------------------------------------------------------------------------*/
100#ifndef vtkKMeansStatistics_h
101#define vtkKMeansStatistics_h
102
103#include "vtkFiltersStatisticsModule.h" // For export macro
105
106class vtkIdTypeArray;
107class vtkIntArray;
108class vtkDoubleArray;
111
112class VTKFILTERSSTATISTICS_EXPORT vtkKMeansStatistics : public vtkStatisticsAlgorithm
113{
114public:
116 void PrintSelf(ostream& os, vtkIndent indent) override;
118
120
124 vtkGetObjectMacro(DistanceFunctor, vtkKMeansDistanceFunctor);
126
128
131 vtkSetMacro(DefaultNumberOfClusters, int);
132 vtkGetMacro(DefaultNumberOfClusters, int);
134
136
139 vtkSetStringMacro(KValuesArrayName);
140 vtkGetStringMacro(KValuesArrayName);
142
144
148 vtkSetMacro(MaxNumIterations, int);
149 vtkGetMacro(MaxNumIterations, int);
151
153
157 vtkSetMacro(Tolerance, double);
158 vtkGetMacro(Tolerance, double);
160
166
170 bool SetParameter(const char* parameter, int index, vtkVariant value) override;
171
173
183 vtkSetMacro(GhostsToSkip, unsigned char);
184 vtkGetMacro(GhostsToSkip, unsigned char);
186
187protected:
190
192
197
202
207
211 void Test(vtkTable*, vtkMultiBlockDataSet*, vtkTable*) override { return; }
212
217 AssessFunctor*& dfunc) override;
218
224 virtual void UpdateClusterCenters(vtkTable* newClusterElements, vtkTable* curClusterElements,
225 vtkIdTypeArray* numMembershipChanges, vtkIdTypeArray* numDataElementsInCluster,
226 vtkDoubleArray* error, vtkIdTypeArray* startRunID, vtkIdTypeArray* endRunID,
227 vtkIntArray* computeRun);
228
235
243 vtkTable* dataElements, vtkIdTypeArray* numberOfClusters, vtkTable* curClusterElements,
244 vtkTable* newClusterElements, vtkIdTypeArray* startRunID, vtkIdTypeArray* endRunID);
245
251 virtual void CreateInitialClusterCenters(vtkIdType numToAllocate,
252 vtkIdTypeArray* numberOfClusters, vtkTable* inData, vtkTable* curClusterElements,
253 vtkTable* newClusterElements);
254
273 double Tolerance;
279
284
285 unsigned char GhostsToSkip;
286
287private:
289 void operator=(const vtkKMeansStatistics&) = delete;
290};
291
292#endif
maintain an unordered list of data objects
general representation of visualization data
Definition: vtkDataObject.h:66
dynamic, self-adjusting array of double
dynamic, self-adjusting array of vtkIdType
a simple class to control print indentation
Definition: vtkIndent.h:40
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:46
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.
static vtkKMeansStatistics * New()
void Aggregate(vtkDataObjectCollection *, vtkMultiBlockDataSet *) override
Given a collection of models, calculate aggregate model NB: not implemented.
virtual void UpdateClusterCenters(vtkTable *newClusterElements, vtkTable *curClusterElements, vtkIdTypeArray *numMembershipChanges, vtkIdTypeArray *numDataElementsInCluster, vtkDoubleArray *error, vtkIdTypeArray *startRunID, vtkIdTypeArray *endRunID, vtkIntArray *computeRun)
Subroutine to update new cluster centers from the old centers.
char * KValuesArrayName
This is the name of the column that specifies the number of clusters in each run.
vtkIdType NumberOfGhosts
Number of ghosts in input data.
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.
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
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.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
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:74
A atomic type representing the union of many types.
Definition: vtkVariant.h:70
int vtkIdType
Definition: vtkType.h:332