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 의 배열 클래스.
Definition RangeTree.h:19
FLImaging의 최상위 기저 클래스
Definition FLBase.h:36
FLImaging 모듈의 수행 결과 객체
Definition ResultsDef.h:1514
K-평균 군집화 알고리즘 클래스
Definition KMeansCluster.h:22
const CResult SetNumOfCluster(int64_t i64NumOfCluster)
클러스터 개수를 지정합니다.
const CResult GetResultCentroid(int64_t i64Index, Base::CFLArray< T > *pFlaCentroid)
초기 중심점을 얻어 옵니다.
const CResult SetInitializeCentroidMethod(EInitializeMethod eInitializeMethod)
초기화 방법을 지정합니다.
EInitializeMethod
초기화 방법을 나타냅니다.
Definition KMeansCluster.h:33
@ EInitializeMethod_Random
랜덤으로 Centroid 를 설정합니다.
Definition KMeansCluster.h:48
@ EInitializeMethod_Manual
직접 Centroid 를 설정합니다.
Definition KMeansCluster.h:56
const CResult GetResultGroupIndex(int64_t i64DataIndex, int64_t *pI64GroupIndex, Base::CFLArray< T > *pFlaData)
지정한 인덱스의 데이터와, 해당 데이터에 대한 그룹 인덱스(클러스터 레이블)을 얻어 옵니다.
const CResult SetMaximumIteration(int64_t i64MaximumIteration)
최대 반복 횟수를 지정합니다.
int64_t GetMaximumIteration()
최대 반복 횟수를 얻어 옵니다.
const CResult Calculate()
K Means Clustering 연산을 수행합니다.
const CResult GetResultGroupIndex(int64_t i64DataIndex, int64_t *pI64GroupIndex)
지정한 인덱스의 데이터에 대한 그룹 인덱스(클러스터 레이블)을 얻어 옵니다.
const CResult AssignData(T *pArrTData, int64_t i64NumOfDimension, int64_t i64NumOfData)
데이터를 지정하는 함수로, 파라미터의 데이터를 객체 내부 변수로 복사 생성합니다.
const CResult SetData(T *pArrTData, int64_t i64NumOfDimension, int64_t i64NumOfData)
데이터를 지정하는 함수로, 파라미터의 데이터 포인터 주소(pArrTData)만 객체 내부 변수로 할당합니다.
const CResult ClearData()
멤버변수로 할당된 데이터 관련 파라미터를 초기화합니다.
const CResult GetResultDataListOfGroup(int64_t i64GroupIndex, Base::CFLArray< Base::CFLArray< T > > *pFlaList)
그룹에 속해있는 Data의 목록을 얻어 옵니다.
virtual ~CKMeansCluster()
기본 소멸자
int64_t GetNumOfCluster()
클러스터 개수를 반환합니다.
const CResult SetInitCentroid(int64_t i64Index, Base::CFLArray< T > *pFlaCentroid)
초기 중심점을 설정합니다.
int64_t GetNumOfDimension()
데이터 Dimension 을 반환합니다.
EInitializeMethod GetInitializeCentroidMethod()
초기화 방법을 얻어 옵니다.
const CResult ClearCentroid()
초기 중심점을 초기화합니다.
const CResult GetResultDataListOfGroup(int64_t i64GroupIndex, Base::CFLArray< int64_t > *pFlaList)
그룹에 속해있는 Data의 목록을 얻어 옵니다.