km聚类分析matlab代码
时间: 2023-09-15 10:23:17 浏览: 72
下面是一份简单的 MATLAB 代码实现 K-Means 聚类分析:
```
% 数据准备
data = [1 2; 1 4; 1 0; 4 2; 4 4; 4 0];
k = 2; % 设置聚类数量
[m, n] = size(data);
cluster = zeros(m, 1);
centers = data(randperm(m, k), :);
% 聚类迭代
for iter = 1:10 % 迭代次数
% 分配聚类
for i = 1:m
dist = zeros(k, 1);
for j = 1:k
dist(j) = norm(data(i, :) - centers(j, :));
end
[~, cluster(i)] = min(dist);
end
% 更新聚类中心
for j = 1:k
centers(j, :) = mean(data(cluster == j, :));
end
end
% 可视化结果
figure;
hold on;
scatter(data(cluster == 1, 1), data(cluster == 1, 2), 'r');
scatter(data(cluster == 2, 1), data(cluster == 2, 2), 'b');
scatter(centers(:, 1), centers(:, 2), 100, 'k', 'filled');
hold off;
```
其中,`data` 是待聚类的数据,`k` 是聚类数量,`cluster` 是每个数据所属的聚类编号,`centers` 是聚类中心的坐标。在迭代中,先根据当前的聚类中心分配每个数据所属的聚类,然后更新聚类中心。最终可视化聚类结果。
阅读全文