matlab(K均值)

K-均值算法MATLAB

作业——K-均值算法

本题模式样本共有10个,聚类数目K取为3。在该MATLAB实现的算法中,本算法使用cell变成单元数据进行初始化和聚类保存,选择该样本集中的前3个样本作为初始聚类中心,按照最小距离原则将样本分配到各个聚类中,计算新的聚类中心,与之前的聚类中心比较。若不同则继续迭代,若相同则算法收敛,停止计算,得到聚类中心和聚类结果见附图。程序:

X=input('请输入样本数据矩阵:');

m=size(X,1);

n=size(X,2);

counter=0;

k=input('请输入聚类数目:');

while k>m

disp('您输入的聚类数目过大,请输入正确的k值');

k=input('请输入聚类数目:');

end

if k==1

disp('聚类数目不能为1,请输入正确的k值');

k=input('请输入聚类数目:');

end

%产生k个零矩阵,M用来存放聚类中心

M=cell(1,m);

for i=1:k

M{1,i}=zeros(1,n);

end

Mold=cell(1,m);

for i=1:k

Mold{1,i}=zeros(1,n);

end

%选择模式样本数据的前K个样本作为初始聚类中心

for i=1:k

M{1,i}=X(i,:);

end

while true

counter=counter+1;

disp('第');

disp(counter);

disp('次迭代');

count=zeros(1,k);

%初始化聚类C

C=cell(1,k);

for i=1:k

C{1,i}=zeros(m,n);

1

相关推荐
相关主题
热门推荐