C语言中K-means算法实现代码.pdf

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:400-050-0739(电话支持时间:9:00-19:00)。
C语语言言中中K-means算算法法实实现现代代码码 K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指 ,即认为两个对象的距离越近,其相似度就越大 。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目 。 算法过程如下: 1)从N个样本随机选取K个样本作为质心 2 )对剩余的每个样本测量其到每个质心的距离,并把它归到最近的质心的类 3 )重新计算已经得到的各个类的质心 4 )迭代2~3步直至新的质心与原质心相等或小于指定阈值,算法结束 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> #include<math.h> #define DIMENSIOM 2 //目前只是处理2维的数据 #define M X_ROUND_TIME 100 //最大的聚类次数 typedef struct Item{ int dimension_1; //用于存放第一维的数据 int dimension_2; //用于存放第二维的数据 int clusterID; //用于存放该item的cluster center是谁 }Item; Item* data; typedef struct ClusterCenter{ double dimension_1; double dimension_2; int clusterID; }ClusterCenter; ClusterCenter* cluster_center_new; int isContinue; int* cluster_center; //记录center double* distanceFromCenter; //记录一个“点”到所有center的距离 int data_size; char filename[200]; int cluster_count; void initial(); void readDataFromFile(); void initial_cluster(); void calculateDistance_ToOneCenter(int itemID, int centerID, int count); void calculateDistance_To llCenter(int itemID); void partition_forOneItem(int itemID); void partition_for llItem_OneCluster(int round); void calculate_clusterCenter(int round); void K_means(); void writeClusterDataToFile(int round); void writeClusterCenterToFile(int round); void compareNew_OldClusterCenter(double* new_X_Y); void test_1(); int main(int argc, char* argv[]){ if( argc != 4 ) { printf("This application need other parameter to run:" "\n\t\tthe first is the size of data set," "\n\t\tthe second is the file name that contain data" "\n\t\tthe third indicate the cluster_count" "\n

文档评论(0)

sfdg4
这是本人近期收集的一些关于计算机的文档,相信程序员朋友特别熟悉,而且上传的时候也是根据语言上传的,全是一些实用的技巧。

相关文档

相关课程推荐