kmeans聚类算法原理matlab代码
时间: 2023-08-28 12:16:21 浏览: 116
K-means聚类算法是一种常用的无监督学习算法,用于将样本数据划分为K个不同的类别。下面是使用Matlab实现K-means聚类算法的简单示例代码:
```matlab
% 载入数据集
load('data.mat');
% 设置参数
K = 3; % 聚类簇数
maxIter = 100; % 最大迭代次数
% 随机初始化聚类中心
idx = randperm(size(data, 1), K);
centroids = data(idx, :);
% 迭代更新聚类中心
for iter = 1:maxIter
% 计算样本点到聚类中心的距离
distances = pdist2(data, centroids);
% 分配样本点到最近的聚类中心
[~, labels] = min(distances, [], 2);
% 更新聚类中心
for k = 1:K
centroids(k, :) = mean(data(labels == k, :));
end
end
% 绘制聚类结果
figure;
gscatter(data(:, 1), data(:, 2), labels);
hold on;
plot(centroids(:, 1), centroids(:, 2), 'k*', 'MarkerSize', 10);
title('K-means Clustering');
legend('Cluster 1', 'Cluster 2', 'Cluster 3', 'Centroids');
```
请注意,这只是一个简单的示例代码,需要根据你的具体数据集和需求进行适当的修改。你需要将数据集存储为名为"data.mat"的MAT文件,并确保数据集中的每一行表示一个样本,每一列表示一个特征。代码通过迭代更新聚类中心,并将最终结果可视化为散点图。
希望对你有所帮助!
阅读全文