实际上我正在做的是我想编写自己的k-means聚类函数。但是,为了给出初始输入,我不知道如何在Matlab中做到这一点。我的意思是,函数的一个输入是聚类中心的数量k,然后我们需要输入函数将在第一次迭代中使用的k个初始值。但是k可能会改变,初始值的数量也会改变。那么我怎么能用Matlab做到这一点。我希望输入是一个整数k和k个初始值。使用不同的k,不同数量的初始输入会发生变化,那么我能做什么呢?
提前致谢!!
答案 0 :(得分:1)
为什么需要k + 1输入?你不能只使用一个输入吗? 例如,使用2维聚类:
function [ returnValues] = kMeans( centers)
% get number of cluster centers
k = size(centers,1);
for i = 1:k
% select each center individually:
center = centers(i,:);
% process
end
具有三个集群中心[1,2],[3,4]和[5,6]的示例调用将是:
values = kMeans([1,2;3,4;5,6]);
答案 1 :(得分:0)
使用输入的变量nuber:
function retVal = kMeans(varargin)
% at least k has to be given
if length(varargin) < 1
error('Wrong number of arguments given');
end
k = varargin{1};
disp(['K: ',num2str(k)]);
%check if k+1 inputs are given
if length(varargin) ~= k+1
error('Wrong number of arguments given');
end
% process inputs
for i = 1+(1:k)
center = varargin{i};
disp(['Input Center ',num2str(i-1),' : ', num2str(center)]);
end
end
使用kMeans(2,[1,2],[3,4])
调用时,会输出:
K: 2
Input Center 1 : 1 2
Input Center 2 : 3 4