⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kmean.h

📁 自行implement的k-mean(含fuzzy c mean)
💻 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 + -