有十个样本点X100X238X322X411X553X648X763X854X964X1075初始类心00 T=5用MATLAB程序编写基于 最近邻聚类算法的函数和主程序
函数代码:
function [cluster, centroid] = nearest_neighbor_clustering(samples, centroid, T) % samples: 样本点矩阵,每行代表一个样本点,列代表维度 % centroid: 初始类心 % T: 迭代次数 % cluster: 最终得到的聚类结果,每个元素代表一个样本点所属的类别 % centroid: 最终得到的类心
% 计算样本点到类心的距离 dist = pdist2(samples, centroid);
% 初始化聚类结果 cluster = zeros(size(samples,1),1);
% 迭代T次 for i = 1:T % 分配样本点到最近的类 [~, idx] = min(dist,[],2); cluster = idx;
% 更新类心
for j = 1:size(centroid,1)
centroid(j,:) = mean(samples(cluster==j,:),1);
end
% 更新距离矩阵
dist = pdist2(samples, centroid);
end
end
主程序代码:
% 样本点矩阵 samples = [0,0;3,8;2,2;1,1;5,3;4,8;6,3;5,4;6,4;7,5];
% 初始类心 centroid = [0,0];
% 迭代次数 T = 5;
% 调用函数进行聚类 [cluster, centroid] = nearest_neighbor_clustering(samples, centroid, T);
% 输出聚类结果和类心 disp("聚类结果:") disp(cluster) disp("类心:") disp(centroid
原文地址: https://www.cveoy.top/t/topic/dFTN 著作权归作者所有。请勿转载和采集!