用MATLAB进行K均值聚类的迭代语法

时间:2013-08-13 17:23:27

标签: matlab cluster-analysis k-means

我在使用MATLAB中的迭代次数时遇到问题。 我使用这段代码,但迭代次数没有变化:

修改

这是我的代码......

            clc;clear;close all;diary temp;
            cluster_data=unifrnd(-3,+3,[100 2]);
            optns = statset('MaxIter',500);
            [idx,ctrs]=kmeans(cluster_data,3,'dist','city', ...   
                              'display','iter','replicate',100,'options',optns);
            figure
            plot(cluster_data(idx==1,1),cluster_data(idx==1,2),'r.','MarkerSize',14)
            hold on
            plot(cluster_data(idx==2,1),cluster_data(idx==2,2),'b.','MarkerSize',16)
            plot(cluster_data(idx==3,1),cluster_data(idx==3,2),'g.','MarkerSize',18)
            plot(ctrs(:,1),ctrs(:,2),'kx',...
                      'MarkerSize',12,'LineWidth',2)
            plot(ctrs(:,1),ctrs(:,2),'ko',...
                      'MarkerSize',12,'LineWidth',2)
            legend('Cluster 1','Cluster 2','Cluster 3','Centroids',...
           'Location','NW')

            fid=fopen('temp');
            dat=textscan(fid,'%s');
            fclose(fid);
            delete temp

            dat=dat{1};
            i1=find(~cellfun('isempty',strfind(dat,'sum')));
            ie=find(~cellfun('isempty',strfind(dat,'iterations')));
            i1=i1(1)+1;
            Nd=str2num(dat{ie(1)-1});
            ie=Nd*4+i1-1;
            dat=reshape(str2num(strvcat(dat{i1:ie})),4,Nd)';

            iter = dat(:,1) % <-- iterations
            sm = dat(:,4)   % <-- sum
            figure
            plot(iter,sm)

问题是迭代次数......我怎样才能真正增加迭代次数? 但是我增加'Maxiter'但没有变化。

1 个答案:

答案 0 :(得分:1)

您应该使用statset来更改迭代次数:

optns = statset('MaxIter',500);

电话kmeans就像这样:

[idx,ctrs]=kmeans(cluster_data,3,'dist','city', ...   
                  'display','iter','replicate',100,'options',optns);

注释
kmeans州的文档:

  

MaxIter - 允许的最大迭代次数。默认值为100.

因此,如果您更改MaxIter的值,则应该是与100不同的数字。