实验三K均值聚类算法实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三 K-Means聚类算法

一、实验目的

1) 加深对非监督学习的理解和认识

2) 掌握动态聚类方法K-Means 算法的设计方法

二、实验环境

1) 具有相关编程软件的PC机

三、实验原理

1) 非监督学习的理论基础

2) 动态聚类分析的思想和理论依据

3) 聚类算法的评价指标

四、算法思想

K-均值算法的主要思想是先在需要分类的数据中寻找K组数据作为初始聚类中心,然后计算其他数据距离这三个聚类中心的距离,将数据归入与其距离最近的聚类中心,之后再对这K个聚类的数据计算均值,作为新的聚类中心,继续以上步骤,直到新的聚类中心与上一次的聚类中心值相等时结束算法。

实验代码

function km(k,A)%函数名里不要出现“-”

warning off

[n,p]=size(A);%输入数据有n个样本,p个属性

cid=ones(k,p+1);%聚类中心组成k行p列的矩阵,k表示第几类,p是属性

%A(:,p+1)=100;

A(:,p+1)=0;

for i=1:k

%cid(i,:)=A(i,:); %直接取前三个元祖作为聚类中心

m=i*floor(n/k)-floor(rand(1,1)*(n/k))

cid(i,:)=A(m,:);

cid;

end

Asum=0;

Csum2=NaN;

flags=1;

times=1;

while flags

flags=0;

times=times+1;

%计算每个向量到聚类中心的欧氏距离

for i=1:n

for j=1:k

dist(i,j)=sqrt(sum((A(i,:)-cid(j,:)).^2));%欧氏距离 end

%A(i,p+1)=min(dist(i,:));%与中心的最小距离

[x,y]=find(dist(i,:)==min(dist(i,:)));

[c,d]=size(find(y==A(i,p+1)));

if c==0 %说明聚类中心变了

flags=flags+1;

A(i,p+1)=y(1,1);

else

continue;

end

end

i

flags

for j=1:k

Asum=0;

[r,c]=find(A(:,p+1)==j);

cid(j,:)=mean(A(r,:),1);

for m=1:length(r)

Asum=Asum+sqrt(sum((A(r(m),:)-cid(j,:)).^2)); end

Csum(1,j)=Asum;

end

sum(Csum(1,:))

%if sum(Csum(1,:))>Csum2

% break;

%end

Csum2=sum(Csum(1,:));

Csum;

cid; %得到新的聚类中心

end

times

display('A矩阵,最后一列是所属类别');

A

for j=1:k

[a,b]=size(find(A(:,p+1)==j));

numK(j)=a;

end

numK

times

xlswrite('data.xls',A);

五、算法流程图

六、实验结果

>>Kmeans

6 iterations, total sum of distances = 204.821

10 iterations, total sum of distances = 205.886

16 iterations, total sum of distances = 204.821

9 iterations, total sum of distances = 205.886

........

9 iterations, total sum of distances = 205.886

8 iterations, total sum of distances = 204.821

8 iterations, total sum of distances = 204.821

14 iterations, total sum of distances = 205.886

14 iterations, total sum of distances = 205.886

6 iterations, total sum of distances = 204.821

Ctrs =1.0754 -1.06321.0482 1.3902-1.1442 -1.1121

SumD =64.294463.593976.9329

七、实验心得

初始的聚类中心的不同,对聚类结果没有很大的影响,而对迭代次数有显著的影响。数据的输入顺序不同,同样影响迭代次数,而对聚类结果没有太大的影响。

相关文档
最新文档