matlab(K均值)

matlab(K均值)

ID:40088629

大小:21.22 KB

页数:10页

时间:2019-07-20

matlab(K均值)_第1页
matlab(K均值)_第2页
matlab(K均值)_第3页
matlab(K均值)_第4页
matlab(K均值)_第5页
资源描述:

《matlab(K均值)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、K-均值算法MATLAB作业——K-均值算法本题模式样本共有10个,聚类数目K取为3。在该MATLAB实现的算法中,本算法使用cell变成单元数据进行初始化和聚类保存,选择该样本集中的前3个样本作为初始聚类中心,按照最小距离原则将样本分配到各个聚类中,计算新的聚类中心,与之前的聚类中心比较。若不同则继续迭代,若相同则算法收敛,停止计算,得到聚类中心和聚类结果见附图。程序:X=input('请输入样本数据矩阵:');m=size(X,1);n=size(X,2);counter=0;k=input('请输入聚类数目:');whilek>mdisp('您输入的聚类数目

2、过大,请输入正确的k值');k=input('请输入聚类数目:');endifk==1disp('聚类数目不能为1,请输入正确的k值');k=input('请输入聚类数目:');end%产生k个零矩阵,M用来存放聚类中心M=cell(1,m);fori=1:kM{1,i}=zeros(1,n);endMold=cell(1,m);fori=1:kMold{1,i}=zeros(1,n);10K-均值算法MATLABend%选择模式样本数据的前K个样本作为初始聚类中心fori=1:kM{1,i}=X(i,:);endwhiletruecounter=counter+

3、1;disp('第');disp(counter);disp('次迭代');count=zeros(1,k);%初始化聚类CC=cell(1,k);fori=1:kC{1,i}=zeros(m,n);end%聚类,按照最短距离原则将其余样本分配到聚类中心中的某一个fori=1:mgap=zeros(1,k);ford=1:kforj=1:ngap(d)=gap(d)+(M{1,d}(j)-X(i,j))^2;endend[y,l]=min(sqrt(gap));count(l)=count(l)+1;C{1,l}(count(l),:)=X(i,:);10K-均值

4、算法MATLABendMold=M;disp('聚类中心为:');fori=1:kdisp(M{1,i})enddisp('聚类结果为:');fori=1:kdisp(C{1,i});endsumvar=0;fori=1:kE=0;%求单个误差平方和为Eforj=1:count(i)forh=1:nE=E+(M{1,i}(h)-C{1,i}(j,h))^2;endendsumvar=sumvar+E;end%求总体误差平方和为sumvar%计算新的聚类中心,更新M,并保存旧的聚类中心fori=1:kM{1,i}=sum(C{1,i})/count(i);end%比

5、较前后两次聚类中心是否变化,若变化则继续迭代;否则算法收敛,停止计算;10K-均值算法MATLABtally=0;fori=1:kifabs(Mold{1,i}-M{1,i})<1e-5*ones(1,n)tally=tally+1;continue;elsebreak;endendiftally==kbreak;endendplot(X(:,1),X(:,2),'b*');axis([010010]);%输出聚类结果figure(1)holdon;P=[M{1,1};M{1,2};M{1,3}];plot(P(:,1),P(:,2),'r*');legend('

6、样本点','聚类中心');%作图,在坐标轴上画出模式样本点和聚类中心点结果:>>Untitled7请输入样本数据矩阵:[00;38;22;11;53;48;63;54;64;75]请输入聚类数目:310K-均值算法MATLAB第1次迭代聚类中心为:003822聚类结果为:001100000000000000003848750010K-均值算法MATLAB00000000000022536354640000000000第2次迭代聚类中心为:0.50000.50004.66677.000010K-均值算法MATLAB4.80003.2000聚类结果为:00221100

7、00000000000038480000000000000000536310K-均值算法MATLAB5464750000000000第3次迭代聚类中心为:113.50008.00005.80003.8000聚类结果为:00221100000010K-均值算法MATLAB000000003848000000000000000053635464750000000000>>10K-均值算法MATLAB10

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。