mykmeans.m

来自「SVDD的工具箱」· M 代码 · 共 51 行

M
51
字号
%MYKMEANS K-means clustering%%      [LABS,MEANS] = MYKMEANS(X,K)%% Place K centers in the data X using the k-means procedure.% Copyright: D.M.J. Tax, D.M.J.Tax@prtools.org% Faculty EWI, Delft University of Technology% P.O. Box 5031, 2600 GA Delft, The Netherlandsfunction [labs,means,err] = mykmeans(x,k,errtol)if nargin<3  errtol = 1e-5;end% init:[n,d] = size(x);% use k random objects as initializationI = randperm(n);means = x(I(1:k),:);% label all objects:D = distm(x,means);[mn, labs] = min(D,[],2);% the reconstruction error:err = sum(mn);olderr = 10*err;% update the means until the error does not changewhile ((olderr-err)>errtol*err)	% update the means:	for i=1:k		I = find(labs==i);		if length(I)>0			means(i,:) = mean(x(I,:),1);		end	end	% relabel all objects:	D = sqeucldistm(x,means);	[mn, labs] = min(D,[],2);	% the error:	olderr = err;	err = sum(mn);endreturn

⌨️ 快捷键说明

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