我是靠谱客的博主 彪壮绿茶,最近开发中收集的这篇文章主要介绍K均值聚类算法(matlab),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

原文地址:K均值聚类算法(matlab) 作者:TimChen525
由于公式不能复制所以原文见: http://wenku.baidu.com/view/1c5f16da240c844769eaee41.html?st=1

K-均值聚类算法

1.初始化:选择c个代表点[转载]k均值聚类算法(matlab)

2.建立c个空间聚类表:[转载]k均值聚类算法(matlab)

3.按照最小距离法则逐个对样本X进行分类:

[转载]k均值聚类算法(matlab)

4.计算J及用各聚类列表计算聚类均值,并用来作为各聚类新的代表点(更新代表点)

5.J不变或代表点未发生变化,则停止。否则转2.

6.[转载]k均值聚类算法(matlab)

 

具体代码如下:

clear all
clc
x=[0 1 0 1 2 1 2 3 6 7 8 6 7 8 9 7 8 9 8 9;0 0 1 1 1 2 2 2 6 6 6 7 7 7 7 8 8 8 9 9];
figure(1)
plot(x(1,:),x(2,:),'r*')
%%第一步选取聚类中心,即令K=2
Z1=[x(1,1);x(2,1)];
Z2=[x(1,2);x(2,2)];
R1=[];
R2=[];
t=1;
K=1;%记录迭代的次数
dif1=inf;
dif2=inf;
%%第二步计算各点与聚类中心的距离
while(dif1>eps&dif2>eps)
for i=1:20
    dist1=sqrt((x(1,i)-Z1(1)).^2+(x(2,i)-Z1(2)).^2);
    dist2=sqrt((x(1,i)-Z2(1)).^2+(x(2,i)-Z2(2)).^2);
    temp=[x(1,i),x(2,i)]';
    if dist1<dist2
        R1=[R1,temp];
    else
        R2=[R2,temp];
    end
end
Z11=mean(R1,2);
Z22=mean(R2,2);
t1=Z1-Z11;%%测试两次是不是相等,可以有多种方法这里只简单的列举一种
t2=Z2-Z22;
dif1=sqrt(dot(t1,t1));
dif2=sqrt(dot(t2,t2));
Z1=Z11;
Z2=Z22;
K=K+1;
R1=[];
R2=[];
end
hold on
plot ([Z1(1),Z2(1)],[Z1(2),Z2(2)],'g+')

 

[转载]k均值聚类算法(matlab)



       

最后

以上就是彪壮绿茶为你收集整理的K均值聚类算法(matlab)的全部内容,希望文章能够帮你解决K均值聚类算法(matlab)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部