可以给我一个 Kmeans++ 聚类算法在matlab上实现的例子么
时间: 2024-05-05 18:16:47 浏览: 12
当然可以,以下是一个简单的Kmeans聚类算法在Matlab上的实现示例:
```matlab
% 设置数据集
data = [1,1;1.5,2;3,4;5,7;3.5,5;4.5,5;3.5,4.5];
% 设置聚类数量
k = 2;
% 设置迭代次数
max_iter = 100;
% 随机初始化聚类中心
centroids = data(randsample(size(data,1),k),:);
for i = 1:max_iter
% 计算每个数据点到聚类中心的距离
distances = pdist2(data,centroids);
% 找到距离最近的聚类中心
[~,labels] = min(distances,[],2);
% 更新聚类中心
for j = 1:k
centroids(j,:) = mean(data(labels == j,:));
end
end
% 可视化结果
figure;
scatter(data(:,1),data(:,2),[],labels);
hold on;
scatter(centroids(:,1),centroids(:,2),200,'r','filled');
title(sprintf('Kmeans Clustering (k=%d)',k));
```
上述代码将数据集定义为一个2维的矩阵,然后随机初始化2个聚类中心,进行100次迭代,计算每个数据点到聚类中心的距离,找到距离最近的聚类中心,然后更新聚类中心。最后通过可视化展示聚类结果。