k均值聚类matlab实现
时间: 2024-01-07 09:22:19 浏览: 27
k均值聚类是一种常用的无监督学习算法,用于将数据集划分为k个不同的簇。下面是在Matlab中实现k均值聚类的示例代码:
```matlab
% 生成示例数据
data = [randn(100,2)+1.5; randn(100,2)-1.5];
% 设置聚类数目
k = 2;
% 初始化聚类中心
centers = datasample(data, k, 'Replace', false);
% 迭代更新聚类中心
for iter = 1:10
% 计算每个样本到聚类中心的距离
distances = pdist2(data, centers);
% 分配样本到最近的聚类中心
[~, labels] = min(distances, [], 2);
% 更新聚类中心
for i = 1:k
centers(i,:) = mean(data(labels == i, :));
end
end
% 绘制聚类结果
figure;
gscatter(data(:,1), data(:,2), labels);
hold on;
plot(centers(:,1), centers(:,2), 'kx', 'MarkerSize', 10, 'LineWidth', 2);
legend('Cluster 1', 'Cluster 2', 'Centroids');
```
这段代码首先生成了一个示例数据集,然后设置了聚类数目k,并初始化了聚类中心。接下来,通过迭代更新聚类中心的方式,将样本分配到最近的聚类中心,并更新聚类中心的位置。最后,使用散点图将聚类结果可视化出来。