文档介绍:《— 人工智能方向实****实****报告专业:计算机科学与技术班级:12419013学号:姓名: 江苏科技大学计算机学院2016年3月实验一数据聚类分析一、实验目的编程实现数据聚类的算法。二、实验内容k-means聚类算法。三、实验原理方法和手段 k-means算法接受参数k;然后将事先输入的n个数据对象划分为k个聚类以便使得所获得的聚类满足:、实验条件Matlab2014b五、实验步骤初始化k个聚类中心。计算数据集各数据到中心的距离,选取到中心距离最短的为该数据所属类别。计算(2)分类后,k个类别的中心(即求聚类平均距离)继续执行(2)(3)直到k个聚类中心不再变化(或者数据集所属类别不再变化)六、实验代码%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%k-meansalgorithm%***@authormatcloud%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clear;closeall;loadfisheriris;X=[meas(:,3)meas(:,4)];figure;plot(X(:,1),X(:,2),'ko','MarkerSize',4);title('fisheririsdataset','FontSize',18,'Color','red');[idx,ctrs]=kmeans(X,3);figure;subplot(1,2,1);plot(X(idx==1,1),X(idx==1,2),'ro','MarkerSize',4);holdon;plot(X(idx==2,1),X(idx==2,2),'go','MarkerSize',4);holdon;plot(X(idx==3,1),X(idx==3,2),'bo','MarkerSize',4);holdon;plot(ctrs(:,1),ctrs(:,2),'kx','MarkerSize',12);title('officialkmeans','FontSize',16,'Color','red');[idx,ctrs]=my_kmeans(X,3);subplot(1,2,2);plot(X(idx==1,1),X(idx==1,2),'ro','MarkerSize',4);holdon;plot(X(idx==2,1),X(idx==2,2),'go','MarkerSize',4);holdon;plot(X(idx==3,1),X(idx==3,2),'bo','MarkerSize',4);holdon;plot(ctrs(:,1),ctrs(:,2),'kx','MarkerSize',12);title('customkmeans','FontSize',16,'Color','red');function[idx,ctrs]=my_kmeans(m,k)[rowcol]=size(m);%initkcentroidsp=randperm(size(m,1));fori=1:kctrs(i,:)=m(p(i),:);endidx=zeros(row,1);%idexispointerofgroupwhile1d=dist2matrix(m,ctrs);[z,g]=min(d,[],2);if(g==idx)break;elseidx=g;end%updatectroidsfori=1:kv=find(g==i);ifvctrs(i,:)=mean(m(v,:),1);endendendendfunction[idx,ctrs]=my_kmeans(m,k)[rowcol]=size(m);%initkcentroidsp=randperm(size(m,1));fori=1:kctrs(i,:)=m(p(i),:);endidx=zeros(row,1);%idexispointerofgroupwhile1d=dist2matrix(m,ctrs);[z,g]=min(d,[],2);if(g==idx)break;elseidx=g;end%updatectroidsfori=1:kv=find(g==i);ifvctrs(i,:)=mean(m(v,:),1);endendendend七、实验结果 图1-1未聚类数据图1-2聚类后实验分析算法的时间复杂度上界为O(n*k*t),其中t是迭代次数。k-means算法是一种基于样本间相似性度量的间接聚类方法,属于非监督学****方法。此算法以k为参数,把n个对象分为k个簇,以使簇内具有较高的相似度,而且簇间的相似度较低。相似度的计算根据一个簇中对象的平均值(被看作簇的重心)