• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

K_means聚类,利用matlab实现对一维数据的聚类

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 

 K_means算法的具体过程

1、从数据集{X} 中任意选取k个赋给初始的聚类中心c1, c2, …, ck;

2、对数据集中的每个样本点xi,计算其与各个聚类中心cj的欧氏距离并获取其类别标号:

3、按下式重新计算k个聚类中心;

 

4、重复步骤2和步骤3,直到达到最大迭代次数、聚类目标函数达到最优值或者两次迭代得到的目标函数变化小于给定的较小值为止

将令k=5聚类的结果如下

 

 

%行5000,列22的数据以矩阵形式保存
M=dlmread('waveform.txt',',');
[m,n]=size(M);
%随机的选取矩阵中的k个元素作为聚类中心
k=5;
c=zeros(1,k);
for i=1:k
  c(1,i)=M(round(rand()*5000)+1,round(rand()*22)+1);
end 
%获取每个样本到聚类中心的距离
label_u=zeros(m,n);
maxgn=60;
label=zeros(m,n);
mindis=20;
iter=1;
while(iter<maxgn)
    for i=1:m
      for j=1:n
          for t=1:k
              dis=(M(i,j)-c(1,t))^2;
              if(dis<mindis || label(i,j)==0)
                  label(i,j)=t;
                  mindis=dis;
                  label_u(i,j)=t;
              end 
          end 
      end
    end
   
   for t=1:k
       sum=0;
       new_u=0;
       for i=1:m
         for j=1:n
            if(label_u(i,j)==t)
               sum=sum+1;
               new_u=new_u+M(i,j);
            end
        end
       end
           c(1,t)=new_u/(sum+eps);
         
   end
   iter=iter+1;
end
   for i=1:m
       for j=1:n
           if(label_u(i,j)==1)
               plot(M(i,j),1,'r+')
              hold on;
           else
               if(label_u(i,j)==2)
               plot(M(i,j),1,'b*')
               hold on;
              
             else
                 if(label_u(i,j)==3)
                  plot(M(i,j),1,'g*')
                  hold on;
                 else
                  if(label_u(i,j)==4)
                  plot(M(i,j),1,'y*')
                  hold on;
                 else
                  if(label_u(i,j)==5)
                  plot(M(i,j),1,'k*')
                  hold on;
                  end   
                 end    
                 end
               end
           end
       end
   end
   
          
          
          

 
View Code

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap