资源简介
这是用C++实现的普通K-means算法,附带iris.dat数据集
k-means 源代码 C++实现 C++ k均值

代码片段和文件信息
#include
#include
#include
#include
#include
#include
using namespace std;
#define NA 4
#define K 3
#define PS 150
#define PC 0.5
#define ED 0.0000001
#define GeneNum 50
int xxx;
typedef struct
{
double p[NA];
double distance[K];
}Point;
Point instance[PS];
typedef struct
{
Point clustercenter[K];
}Pop;
Pop pop; //聚类中心
int cluster[K][PS];
int clusternum[K];
double clustermean[K];
double innerdistance;
double oldinnerdistance;
double btdistance;
double fitness;
void input()//读入待聚类数据
{
fstream fin(“iris.data“);
int i;
int j;
string line;
double word;
for(i=0;getline(finline)&&i {
istringstream stream(line);
for(j=0;stream>>word&&j {
instance[i].p[j]=word;
}
}
}
int find(int a[]int nint b)
{
int ii;
for(ii=0;ii if(a[ii]==b) return 1;
return 0;
}
void sort(int a[]int n)//冒泡排序
{
int temp;
int ij;
for(i=0;i for(j=0;j {
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
void init()
{
int ij;
int num=0;
int random;
int rt[K];
srand(time(NULL));
for(;num {
random=rand()%PS;
if(!find(rtnumrandom))
rt[num++]=random;
}
sort(rtK);
for(i=0;i for(j=0;j {
pop.clustercenter[i].p[j]=instance[rt[i]].p[j];
}
}
void printfpop()
{
int ijk;
cout<<“个体“< for(j=0;j {
cout<<“(“;
for(k=0;k {
cout< }
cout<<“) “;
}
printf(“ 准则函数值为:%4.5f\n“fitness);
}
double eucliddistance(int xint y)
{
int i;
double distance=0;
for(i=0;i {
distance+=pow((instance[x].p[i]-pop.clustercenter[y].p[i])2);
}
distance=sqrt(distance);
return distance;
}
void calcuatedistance()
{
int ij;
for(i=0;i for(j=0;j {
instance[i].distance[j]=eucliddistance(ij);
}
}
void Cluster()
{
int ijkl;
double min;
double count[NA];
int index;
for(k=0;k clusternum[k]=0;
for(i=0;i {
index=0;
min=instance[i].distance[0];
for(j=1;j {
if(instance[i].distance[j] {
min=instance[i].distance[j];
index=j;
}
}
cluster[index][clusternum[index]++]=i;
}
oldinnerdistance=innerdistance;
innerdistance=0.0;
for(i=0;i {
for(j=0;j innerdistance+=pow(instance[cluster[i][j]].distance[i]2);
}
fitness=1/(1+innerdistance);
}
vo
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3859 2010-05-06 09:39 k-means.cpp
文件 2702 2010-04-16 16:15 iris.data
----------- --------- ---------- ----- ----
6561 2
相关资源
- 国际象棋的qt源代码
- C语言开发实战宝典
- 小甲鱼C语言课件 源代码
- c语言看发的网络协议 ,源代码
- C语言实现的DES对称加密算法
- 数据结构,迷宫问题C语言版源代码
- C语言 学生信息管理系统 源代码
- C语言版3D魔方游戏源代码
- QT5开发及源代码
- USB CAN Tool 源代码(LabVIEW 2011环境)
- 超声波水表源代码
- 一个模糊PID温度控制算法源代码
- 数据结构 图的遍历源代码
- 数据结构实验源代码集
- TCP/IP客户端和服务器端源代码,好用
- 交互式计算机图形学 第六版 OpenGL源代
- 数据结构教程李春葆第五版书中例题
- 三次样条插值类源代码!
- diy写字机grbl v1.1源代码
- C语言常用算法源代码
- 关于LED制作的源代码合集(38套)
-
STM32-ba
se64加密源代码 - 51超声波避障源代码
- 一个C++实现的源代码行数统计工具
- ZZULIOJ部分答案C语言免费.7z
- 吉他调音软件源代码
- 连连看源代码C语言版
- AVR单片机SPI通讯程序 (C语言源代码)
- Visual+C++数字图像处理-谢凤英-源代码
- 大富翁源代码
评论
共有 条评论