matlab手写实现kmeans聚类算法
时间: 2023-10-22 15:14:15 浏览: 86
以下是一个示例代码,实现了kmeans聚类算法:
```
% 生成随机数据
data = rand(50,2);
% 设置聚类数
k = 3;
% 随机初始化聚类中心
centers = data(randperm(size(data,1),k),:);
% 计算每个数据点到聚类中心的距离
distances = pdist2(data,centers);
% 执行聚类迭代
for i = 1:10
% 找到每个数据点所属的聚类
[~,labels] = min(distances,[],2);
% 更新聚类中心
for j = 1:k
centers(j,:) = mean(data(labels==j,:));
end
% 计算每个数据点到更新后的聚类中心的距离
distances = pdist2(data,centers);
end
% 可视化聚类结果
scatter(data(labels==1,1),data(labels==1,2),'r');
hold on;
scatter(data(labels==2,1),data(labels==2,2),'g');
scatter(data(labels==3,1),data(labels==3,2),'b');
scatter(centers(:,1),centers(:,2),'k','filled');
```
这段代码首先生成了50个随机数据点,然后设置聚类数为3。接着随机初始化了3个聚类中心,并计算每个数据点到聚类中心的距离。然后执行了10次聚类迭代,每次更新聚类中心并重新计算每个数据点到聚类中心的距离。最后可视化了聚类结果,将每个聚类用不同颜色的散点图表示,聚类中心用黑色圆点表示。
阅读全文