c语言写的数据挖掘的层次聚类算法(新手版)

自己写的c语言写的数据挖掘的层次聚类算法,只用于学习交流,请勿转载!!!!

# include<stdio.h>

# include<math.h>
main(){
int num,i,j,t,clear=0,place,count,numb;     //Cnum  //clear变量用于消除合并后的前一个集合书中第144页的第(3)步,count表示目前聚类个数,Cnum表示需要的聚类个数
float distance[50][50];                //distance[m][n]中,m表示第m个数,n表示第n个数,总体表示n与m的距离
int data[50],cluster[50][50],min;
printf("请输入数据项的个数:");
scanf("%d",&num);
for(i=0;i<num;i++){
printf("请输入第%d个数据:",i+1);
scanf("%d",&data[i]);
}
/*printf("请输入需要聚类的个数:");
scanf("%d",&Cnum);*///用于限定聚类个数的,日后再来搭建
for(i=0;i<num;i++)
cluster[i][0]=data[i];
for(i=0;i<num-1;i++){
for(j=0;j<num-(i+1);j++)
distance[i][j]=sqrt(pow((cluster[i][0]-cluster[j+i+1][0]),2));
}                                                                                          //这里以上是第一次聚类,每个元素作为一类,并计算距离
//在这里我发现不需要运用结构体,用二维数组就可以了的cluster[m][n]m表示第几个元素初始每一行只有一个元素,后面再慢慢累加上去
count=num;
printf("距离为:\n");
for(i=0;i<num-1;i++){                                //输出距离
printf("其余元素与第%d个距离为:",i+1);
for(j=0;j<num-1;j++)
if(distance[i][j]>=0)
printf("%3.2f ",distance[i][j]);
putchar('\n');
}              //这里以后开始层次聚类的核心,需要添加循环
for(t=0;t<num-1;t++){
numb=0;
min=distance[t][0];
place=0;
for(i=1;i<num-1;i++){
if(min>distance[t][i]&&distance[t][i]>=0){
min=distance[t][i];
place=i;
}
}
printf("第一行的最小值为:%d位置为%d\n",min,place+1);
while(cluster[t+place+1][numb]>=0)
numb++;
for(i=0;i<num;i++){

if(cluster[t][i]>=0)
cluster[t+place+1][numb++]=cluster[t][i];
}        //合并有点问题
clear++;
count--;
for(i=clear;i<num;i++){
for(j=0;j<num;j++)
if(cluster[i][j]>=0)
printf("%d ",cluster[i][j]);
putchar('\n');
}
printf("目前聚类个数为:%d\n",count);
}
    getchar();//暂停用
}
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值