📄 kmean.h
字号:
// KMean.h: interface for the CKMean class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_KMEAN_H__086DCD61_2145_4E66_9BCA_0E3C24D47FAC__INCLUDED_)
#define AFX_KMEAN_H__086DCD61_2145_4E66_9BCA_0E3C24D47FAC__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Last Modify
// Maker Chen 2008/11/09
#define MATRIX_BASE_TYPE double
typedef struct KC_MEAN_PROCESS_INFO
{
int Row; // Matrix' Rows
int Col; // Matrix' Columns
MATRIX_BASE_TYPE *Data; // Matrix' Data (Column Major)
MATRIX_BASE_TYPE **p_Column; // Point to Matrix' Data in Each Column
}DATA_MATRIX;
class CKMean
{
public:
MATRIX_BASE_TYPE CompareDistance(MATRIX_BASE_TYPE *Compare_1, MATRIX_BASE_TYPE *Compare_2, int Compare_Count, UINT Compare_Method = 0);
CKMean();
virtual ~CKMean();
int C_Mean(DATA_MATRIX SourceMatrix, int C_Clusters, int *Result_Cluster_Label, DATA_MATRIX &Result_Cluster_Center, int TotalProcessLoop = 10, UINT Distance_Compare_Method = 0);
int K_Mean(DATA_MATRIX SourceMatrix, int K_Clusters, int *Result_Cluster_Label, DATA_MATRIX &Result_Cluster_Center, int TotalProcessLoop = 10, UINT Distance_Compare_Method = 0);
int K_Mean(DATA_MATRIX SourceMatrix, int Process_Matrix_Count, int K_Clusters, int *Result_Cluster_Label, int *Result_Cluster_Distance, DATA_MATRIX &Result_Cluster_Center, int TotalProcessLoop = 10, UINT Distance_Compare_Method = 0);
// Matrix Process
BOOL InitialMatrix(DATA_MATRIX &SourceMatrix, int Column, int Row, BOOL ZeroMatrix = FALSE);
void DeleteMatrix(DATA_MATRIX &SourceMatrix);
void DisplayMatrix(DATA_MATRIX MatrixData, CString TitleForDisplay = "");
private:
MATRIX_BASE_TYPE MachineEpsilon();
void CopyMatrix(DATA_MATRIX &DestMatrix, DATA_MATRIX FromMatrix);
void SortMatrix(DATA_MATRIX &ResultMatrix, DATA_MATRIX SourceMatrix, int Col_Range);
void SortMatrix(DATA_MATRIX &ResultMatrix, DATA_MATRIX SourceMatrix);
int VectorFindMin(MATRIX_BASE_TYPE *Vector, int VectorSize);
private:
template<class T> static void SWAP(T& t1, T& t2) {T ts = t1; t1 = t2; t2 = ts;}
template<class T> static T Min(T t1, T t2) {return(t1 > t2 ? t2 : t1);}
template<class T> static T Max(T t1, T t2) {return(t1 > t2 ? t1 : t2);}
};
#endif // !defined(AFX_KMEAN_H__086DCD61_2145_4E66_9BCA_0E3C24D47FAC__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -