FLImaging 6.5.8.1
KMeansCluster.h
1#pragma once
2
10namespace FLImaging
11{
13 namespace Foundation
14 {
20 template<typename T>
21 class FL_EXPORT CKMeansCluster : public Base::CFLBase
22 {
23 public:
32 enum EInitializeMethod :int32_t
33 {
40 EInitializeMethod_Auto = 0,
41
49
57 };
58
67
75 virtual ~CKMeansCluster();
76
90 const CResult SetNumOfCluster(int64_t i64NumOfCluster);
91
102
113
131 const CResult AssignData(T* pArrTData, int64_t i64NumOfDimension, int64_t i64NumOfData);
132
150 const CResult SetData(T* pArrTData, int64_t i64NumOfDimension, int64_t i64NumOfData);
151
164
178 const CResult SetMaximumIteration(int64_t i64MaximumIteration);
179
190
207
220
238 const CResult SetInitCentroid(int64_t i64Index, Base::CFLArray<T>* pFlaCentroid);
239
257 const CResult GetResultCentroid(int64_t i64Index, Base::CFLArray<T>* pFlaCentroid);
258
271
287 const CResult GetResultGroupIndex(int64_t i64DataIndex, int64_t* pI64GroupIndex);
288
308 const CResult GetResultGroupIndex(int64_t i64DataIndex, int64_t* pI64GroupIndex, Base::CFLArray<T>* pFlaData);
309
327 const CResult GetResultDataListOfGroup(int64_t i64GroupIndex, Base::CFLArray<Base::CFLArray<T>>* pFlaList);
328
346 const CResult GetResultDataListOfGroup(int64_t i64GroupIndex, Base::CFLArray<int64_t>* pFlaList);
347
360
361
362 SupportToDuplicateObject(CKMeansCluster, *this);
363 DeclareGetClassType();
364
365 protected:
366 double InternalEuclideanDistance(T* pData1, T* pData2, int64_t i64Dimension);
367
368 protected:
369 int64_t m_i64NumOfDimension;
370 int64_t m_i64NumOfData;
371 int64_t m_i64NumOfCluster;
372
373 T* m_pTVectors;
374 T** m_pTVectorsYCache;
375 bool m_bBufferCreated;
376
377 T* m_pTCentroid;
378 T** m_pTCentroidYCache;
379
380 int64_t* m_pTResultDataGroup;
381
382 int64_t m_i64MaximumIteration;
383 EInitializeMethod m_eInitializeMethod;
384 };
385 }
386}
387
Template type array class.
Definition RangeTree.h:19
Top-level base class of FLImaging.
Definition FLBase.h:36
FLImaging module execution result object.
Definition ResultsDef.h:1514
A class of K-Means cluster algorithm.
Definition KMeansCluster.h:22
const CResult SetNumOfCluster(int64_t i64NumOfCluster)
Set the number of clusters.
const CResult GetResultCentroid(int64_t i64Index, Base::CFLArray< T > *pFlaCentroid)
Get the initial center point.
const CResult SetInitializeCentroidMethod(EInitializeMethod eInitializeMethod)
Specifies the initialization method.
EInitializeMethod
Indicates the initialization method.
Definition KMeansCluster.h:33
@ EInitializeMethod_Random
Set the centroid randomly.
Definition KMeansCluster.h:48
@ EInitializeMethod_Manual
Set the centroid manually.
Definition KMeansCluster.h:56
const CResult GetResultGroupIndex(int64_t i64DataIndex, int64_t *pI64GroupIndex, Base::CFLArray< T > *pFlaData)
Gets the data of the specified index and the group index (cluster label) for that data.
const CResult SetMaximumIteration(int64_t i64MaximumIteration)
Specifies the maximum number of iterations.
int64_t GetMaximumIteration()
Get the maximum number of iterations.
const CResult Calculate()
Perform K Means Clustering operation.
const CResult GetResultGroupIndex(int64_t i64DataIndex, int64_t *pI64GroupIndex)
Gets the group index (cluster label) for the data at the specified index.
const CResult AssignData(T *pArrTData, int64_t i64NumOfDimension, int64_t i64NumOfData)
This is a function that specifies a data set, and copies the parameter data into an object internal v...
const CResult SetData(T *pArrTData, int64_t i64NumOfDimension, int64_t i64NumOfData)
As a function that specifies a data set, only the data pointer address (pArrTData) of the parameter i...
const CResult ClearData()
Initialize parameters related to data allocated as member variables.
const CResult GetResultDataListOfGroup(int64_t i64GroupIndex, Base::CFLArray< Base::CFLArray< T > > *pFlaList)
Get a list of data belonging to a group.
virtual ~CKMeansCluster()
default destructor
int64_t GetNumOfCluster()
Get the number of clusters.
const CResult SetInitCentroid(int64_t i64Index, Base::CFLArray< T > *pFlaCentroid)
Set the initial center point.
int64_t GetNumOfDimension()
Get the data dimension.
EInitializeMethod GetInitializeCentroidMethod()
Get the initialization method.
const CResult ClearCentroid()
Initialize the initial center point.
const CResult GetResultDataListOfGroup(int64_t i64GroupIndex, Base::CFLArray< int64_t > *pFlaList)
Get a list of data belonging to a group.