matlab 代码实现 k-means 算法
时间: 2023-08-10 19:07:49 浏览: 115
多重分形的matlab代码-K_Means_Algorithm_Binarization_Of_Image:K_Means_Algorithm
以下是 MATLAB 中实现 k-means 算法的示例代码:
```matlab
function [centroids, idx] = kmeans(X, K, max_iters)
% K-means 算法的实现
% 初始化参数
[m, n] = size(X);
centroids = X(randperm(m, K), :); % 随机初始化聚类中心
idx = zeros(m, 1);
% 迭代更新
for iter = 1:max_iters
% 分配每个样本到最近的聚类中心
for i = 1:m
dist = sum((X(i, :) - centroids).^2, 2);
[~, idx(i)] = min(dist);
end
% 更新聚类中心
for k = 1:K
centroids(k, :) = mean(X(idx == k, :));
end
end
end
```
在这个示例代码中,`X` 是数据集,每行是一个样本,`K` 是簇的个数,`max_iters` 是最大迭代次数。函数返回聚类中心 `centroids` 和每个样本所属的簇 `idx`。
函数首先随机选择 `K` 个样本作为初始聚类中心,然后进行迭代更新。在每次迭代中,首先计算每个样本到聚类中心的距离,然后将样本分配到距离最近的聚类中心所属的簇。接着,更新每个簇的聚类中心为该簇中所有样本的均值。重复以上步骤直至达到最大迭代次数。
使用该函数可以实现 k-means 算法并得到聚类结果。
阅读全文