function [C,V,L]=initoakmr(patterns,numcenters,variation) %INITOAKMR Initialize centers, variations and learning rate from input patterns % % [C,V,L]=INITOAKM(patterns,numcenters,variation=1.0e-10) % % C - Initial centers selected randomly from input patterns % V - Initial variations for each cluster (close to 0.0 ; default is 1.0e-10) % L - Initial learning rate % % patterns - Input patterns % numcenters - Number of clusters % variation - Initial cluster variations % % Computes initial values for the centers and cluster variation, associated with % each cluster, given the input patterns. Computes also the initial learning rate % % References: % % Chinrungrueng, C., and C.H. Séquin (1995). % "Optimal Adaptive k-means Algorithm With Dynamic Adjustment of Learning Rate" % IEEE Transactions on Neural Networks, vol.6, Nº 1, pp. 157-169 % % 04/06/1999 ; Pedro Frazão Ferreira % if (nargin<2) | (nargin>3), error('Wrong number of input arguments. Try "help initoakmr".'); end if nargin==2, variation=1.0e-10; end rand('state',sum(100*clock)); dim=size(patterns); C=zeros(numcenters,dim(2)); while ~diffrows(C), shuff=randperm(dim(1)); for i=1:numcenters, C(i,:)=patterns(shuff(i),:); end end V=ones(numcenters,1)*variation; vknorm=V/sum(V); quality=sum(-vknorm.*log(vknorm)); L=1-(quality/log(dim(1)));