算法参见
http://cs229.stanford.edu/notes/cs229-notes7a.pdf
function y=K_mean(data,k)
[r,c]=size(data);
%r : 数据的总数
%c: 每个数据的特征的个数
initcen=ones(k,c); %预分配initial center
initcen_cur=initcen; % current initial center
dis=ones(r,k); % distance
diff=ones(k,1);
for i=1:k
initcen(i,:)=data(ceil(r*rand),:); %随机生成k个初始中心点,(在数据集中选取)
end
while sum(diff)>0.1
for i=1:k
initvec=ones(r,1)*initcen(i,:); %将k个中心点扩展为r*c的矩阵
for j=1:r
dis(j,i)=norm(data(j,:)-initvec(j,:)); %dis是r*k 矩阵,每个数据到每个中心点的距离
end
end
[minval,tag]=min(dis'); %min按列找最小值
data_tag=[dat


4081

被折叠的 条评论
为什么被折叠?



