Matlab实现简单C均值算法.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Matlab实现简单C均值算法

Matlab实现C均值:clear;clc;%类数,c2c=3;pointnum=50;pointheart=[30,30;80,40;50,70];%高斯分布产生二维随机数point = [mvnrnd(pointheart(1,:),[30,0;0,30],pointnum);... mvnrnd(pointheart(2,:),[30,0;0,30],pointnum);... mvnrnd(pointheart(3,:),[30,0;0,30],pointnum)];%增广化[x,y]=size(point);point=[point,ones(x,1)];%ρ(用p表示)p=1;%w1;w2;w3w=ones(c,3);%开始感知器算法flag=1;while(flag==1) flag=0; for i = 1:c for ii = point((i-1)*pointnum+1:i*pointnum,:) d=w*ii; flag2=0; for iii=1:c if(iii==i) continue; end if(d(iii)=d(i)) flag=1; flag2=1; w(iii,:)=w(iii,:)-p*ii; end end if(flag2==1) w(i,:)=w(i,:)+p*ii; end end endendw%求边界,d(i)=d(j)wb=zeros(c,3);xmax=max(point(:,1));xmin=min(point(:,1));ymin=min(point(:,2));%求各边界的公共交点atmp=[];for xi=1:c-1 for yi=xi+1:c atmp=[atmp;w(xi,:)-w(yi,:)]; endendr=rank(atmp);a=null(atmp,r);%解向量a有可能为空%画边界,仅c=3情况,更多维考虑atmp顺序问题hold on;for xi=1:c if(norm([xmin-20,-((atmp(xi,1)*(xmin-20)+atmp(xi,3))/atmp(xi,2))]-pointheart(c-xi+1,:))=... norm([xmax+20,-((atmp(xi,1)*(xmax+20)+atmp(xi,3))/atmp(xi,2))]-pointheart(c-xi+1,:))) xx=(xmin-20):a(1,1); else xx=a(1,1):(xmax+20); end y=-((atmp(xi,1)*xx+atmp(xi,3))/atmp(xi,2)); plot(xx,y,k);end%画点plot(point(1:pointnum,1),point(1:pointnum,2),+r,... point(pointnum+1:2*pointnum,1),point(pointnum+1:2*pointnum,2),+b,... point(2*pointnum+1:3*pointnum,1),point(2*pointnum+1:3*pointnum,2),+g);%测试,10个点测试testpoints=rand(10,2)*100;[x,y]=size(testpoints);testpoints=[testpoints,ones(x,1)];colors=rand(c,3);for i=1:x [maxn,postion]=max(w*testpoints(i,:)); plot(testpoints(i,1),testpoints(i,2),*,Color,colors(postion,:));endhold off;效果如下,红蓝绿较为密集的点是测试用的点,而比较稀疏的点是用来训练的点。

文档评论(0)

wnqwwy20 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档