logo资料库

K-means.pdf

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
% k-mean 聚类算法 % main variables dim = 2; % 模式样本维数 k = 4; % 设有 k 个聚类中心 load('testSet.txt'); PM=testSet;% 模式样本矩阵 N = size(PM,1); figure(); subplot(1,2,1); for(i=1:N) plot(PM(i,1),PM(i,2), '*r'); % 绘出原始的数据点 hold on end xlabel('X'); ylabel('Y'); title('聚类之前的数据点'); CC = zeros(k,dim); % 聚类中心矩阵,CC(i,:)初始值为 i 号样本向量 D = zeros(N,k); % D(i,j)是样本 i 和聚类中心 j 的距离 C = cell(1,k); %% 聚类矩阵,对应聚类包含的样本。初始状况下,聚类 i(i
t1 = t1(2:length(t1)); C{B(i)} = t1; C{t} = [C{t},i]; % 将 i 加入第 t 类 B(i) = t; end end if change == 0 %分类结果无变化,则迭代停止 break; end % 重新计算聚类中心矩阵 CC for i = 1:k CC(i,:) = 0; iclu = C{i}; for j = 1:length(iclu) CC(i,:) = PM( iclu(j),: )+CC(i,:); end CC(i,:) = CC(i,:)/length(iclu); end end subplot(1,2,2); plot(CC(:,1),CC(:,2),'o') hold on for(i=1:N) if(B(1,i)==1) plot(PM(i,1),PM(i,2),'*b'); %作出第一类点的图形 hold on elseif(B(1,i)==2) plot(PM(i,1),PM(i,2), '*r'); %作出第二类点的图形 hold on elseif(B(1,i)==3) plot(PM(i,1),PM(i,2),'*g'); %作出第三类点的图形 hold on else plot(PM(i,1),PM(i,2), '*m'); %作出第四类点的图形 hold on end end xlabel('X'); ylabel('Y'); title('聚类之后的数据点'); % 打印 C,CC for i = 1:k %输出每一类的样本点标号 str=['第' num2str(i) '类包含点: ' num2str(C{i})]; disp(str); end;
分享到:
收藏