📄 kmeans.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 + -