kmeans算法的matlab代码
时间: 2023-07-28 21:08:19 浏览: 76
K-means 聚类算法的 MATLAB 代码如下:
```
% X: 数据矩阵,每一行代表一个样本
% k: 聚类个数
% C: 聚类中心
% idx: 每一个样本所属的聚类编号
function [C, idx] = kmeans(X, k)
[m, n] = size(X);
% 随机初始化聚类中心
C = X(randperm(m, k), :);
old_C = C;
idx = zeros(m, 1);
while true
% 更新每一个样本所属的聚类编号
for i = 1:m
min_dist = inf;
for j = 1:k
dist = sum((X(i, :) - C(j, :)).^2);
if dist < min_dist
min_dist = dist;
idx(i) = j;
end
end
end
% 更新聚类中心
for i = 1:k
C(i, :) = mean(X(idx == i, :));
end
% 如果聚类中心没有发生变化,则算法终止
if C == old_C
break;
end
old_C = C;
end
end
```
这份代码实现了 k-means 算法的核心过程。在调用该函数时,需要传入数据矩阵和聚类个数,函数会返回聚类中心和每一个样本所属的聚类编号。
阅读全文