vqinitcenter.m

来自「一个关于数据聚类和模式识别的程序,在生物化学,化学中因该都可以用到.希望对大家有」· M 代码 · 共 32 行

M
32 行
字号
function center = vqInitCenter(data, clusterNum, method)
% vqInitCenter: Find initial centers for VQ or k-means
%	Usage: center = vqInitCenter(data, clusterNum, method)

%	Roger Jang, 20041204

if nargin<3; method=1; end
switch method
	case 1
		% ====== Method 1: Randomly pick clusterNum data points as cluster centers
		dataNum = size(data, 2);
		temp = randperm(dataNum);
		center = data(:, temp(1:clusterNum));
	case 2
		% ====== Method 2: Choose clusterNum data points closest to mean vector
		meanVec = mean(data, 2);
		distMat = pairwiseSqrDistance(meanVec, data);
		[minDist, colIndex] = sort(distMat);
		center = data(:, colIndex(1:clusterNum));
	case 3
		% ====== Method 3: Choose clusterNum data points furthest to the mean vector
		meanVec = mean(data, 2);
		distMat = pairwiseSqrDistance(meanVec, data);
		[minDist, colIndex] = sort(-distMat);
		center = data(:, colIndex(1:clusterNum));
	case 4
		% ====== Method 4: Choose first few data as the centers
		center = data(:, 1:clusterNum);
	otherwise
		error('Unknown method!');
end

⌨️ 快捷键说明

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