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

📄 kmeans.cpp

📁 模式识别k_means聚类算法。
💻 CPP
字号:
//K_means make clusters

#include <iostream>
#include <math.h>
#include "fun.h"
#include "c_kmeans.h"
#include "point.h"
#include "encoder.h"

#define DATATYPE double

#define MAX_RAND 0X7FFF
using namespace std;

void main()
{
	int pnum = 10000;   //点数
	int dim  = 30;	    //空间维数
	int gnum = 64;
	DATATYPE *points = new DATATYPE[pnum * dim];
	DATATYPE *seeds = new DATATYPE[gnum * dim];
	//point<int> p(8);

	k_means<DATATYPE> system;

	//初始化几组明显聚在一起的数据用于测试。
	/*
	for (int i = 0; i < gnum; i++ )
	{
		for (int j = 0;j < pnum * dim / gnum; j++)
		{
			points[i * pnum * dim / gnum  + j] = 2000 * i + rand()/50 - MAX_RAND/100;
		}
	}
	*/
	for (int i = 0; i < pnum * dim ;i ++)
	{
		points[i] = 1.0*rand()/65536;
	}

	cout<<"initing ...."<<endl;

	//初始化kmeans聚类系统。
	system.init((DATATYPE*)points, dim, gnum, pnum);

	//显示最初初始化时候的中心点情况.
	system.show_result();

	do{
		system.refresh_clusters();
		cout<<"round "<<system.GetCaculateTimes()<<"  =======  "<<endl;
	//	system.show_result();

	}while (system.check_steady() == false);

	cout<<"********************************  result ********************************"<<endl;
	cout<<"remake center times :"<< system.GetCaculateTimes() <<endl;
	cout<<endl;

	system.show_result();
	system.ExportSeeds(seeds);

	//test encoder;
	CEncoder<DATATYPE> encoder_system;

	encoder_system.init(seeds, dim, gnum);
	
	DATATYPE sample[3] = {2000 , 2000 ,2000};
	
	encoder_system.seed_id( (DATATYPE * )sample ) ;

	delete [] points;
	delete [] seeds;

	cout<<"press any key to exit"<<endl;
	getchar();

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -