⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clusmse.m

📁 最新的模式识别分类工具箱,希望对朋友们有用!
💻 M
字号:
% ---------------------------------------------------------------- % FUNCTION   clusmse.m    CLUSterin algorithm, MSE metric.% ---------------------------------------------------------------- % 		builds a block training set. % Usage: %   cluster_centers = clusmse(orig_cluster_centers, training set, precision);% % orig_cluster: matrix, each ROW is a cluster center.% training set: matrix, each ROW is a sample.% Precision = stopping criterion: If the difference between two following%		mse's is less than epsilon, then stop.%% __________________________%  Author: Vittorio Castelli%  Copyright IBM T. J. Watson Research Center%      January 30, 1995;	Last modified: January 30, 1995function clCen =  clusmse(origCen, trSet,prec);learning_rate = .07;n_dist = 32;maxcount = 128;count = 0;contatore = 0;dis = 1;[m,n] = size(trSet);[n_cent,n1] = size(origCen);if n ~= n1,   errormes(4);   returnendaaa = ones(1,n);aa = ones(1,m);clCen = origCen;figure(1);clg;figure(2);clg;figure(3);clg;asdfg = max(size(trSet));plot3(trSet(1:20:asdfg,1),trSet(1:20:asdfg,2),trSet(1:20:asdfg,3),'.');grid;hold;oldplCen = clCen;plot3(clCen(:,1),clCen(:,2),clCen(:,3),'mx');while dis > prec,  oldCen=clCen;  contatore = contatore +1;  for ii = 1:n_cent,      distan(ii,:) = sum((trSet'-((clCen(ii,:))'*aa)).^2);  end;    [distan,ord] = sort(distan);  ord = ord';  ord = ord(:,1);  dis=0;  for i=1:n_cent,        nelcloud(i) = sum(ord==i);        if nelcloud(i) ==0,             fprintf(' %g',i)        else           aver = sum((((ord==i)*aaa).*trSet))/nelcloud(i);           clCen(i,:) = clCen(i,:).*(1-learning_rate)+aver.*learning_rate;           disper(i) =  sum((ord == i).* ...                   (sum(((clCen(i,:)'*aa)-trSet').^2))')/nelcloud(i);        end        d_i = sum((clCen(i,:)-oldCen(i,:)).^2);        dis=max(dis, d_i);        disi(i) = d_i;            end    figure(1);   subplot(211)   plot(sqrt(disper),'+');   title('Dispersion');   subplot(212)   plot(disi)   titlestr = sprintf('Changes, iter. %g',contatore);   title(titlestr);   count = count+1;   distance(count) = dis;   if rem(count,n_dist)==0,      figure(2);      plot(distance,'.');      grid      figure(3)      plot3(oldplCen(:,1),oldplCen(:,2),oldplCen(:,3),'cx');      plot3(clCen(:,1),clCen(:,2),clCen(:,3),'mx');      oldplCen = clCen;   end   if count==maxcount,       distance(1:count-n_dist+1) = distance(n_dist:count);       count = count-n_dist+1,   endendfprintf('\n');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -