-2

我在使用 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”但没有出现任何变化。

4

1 回答 1

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

于 2013-08-13T18:15:20.627 回答