k-meansMATLAB通用代码
时间: 2023-07-30 17:08:01 浏览: 48
以下是一个简单的k-means算法的MATLAB通用代码示例:
```matlab
function [centroids, idx] = kmeans(X, K)
% 初始化聚类中心
centroids = X(randperm(size(X, 1), K), :);
% 迭代更新聚类中心直到收敛
while true
% 计算每个样本点到各个聚类中心的距离
distances = pdist2(X, centroids);
% 为每个样本点分配最近的聚类中心
[~, idx] = min(distances, [], 2);
% 更新聚类中心为每个聚类的均值
for k = 1:K
centroids(k, :) = mean(X(idx == k, :), 1);
end
% 检查聚类中心是否发生变化
if isequal(old_centroids, centroids)
break;
end
old_centroids = centroids;
end
end
```
使用方法:
```matlab
% 随机生成一些数据点
X = randn(100, 2);
% 调用k-means函数进行聚类
K = 3; % 设定聚类的数量
[centroids, idx] = kmeans(X, K);
% 可视化聚类结果
scatter(X(:, 1), X(:, 2), 10, idx, 'filled');
hold on;
scatter(centroids(:, 1), centroids(:, 2), 100, (1:K)', 'filled');
```
这个代码示例会将输入数据X聚类为K个簇,并返回每个样本点的聚类标签idx和最终的聚类中心centroids。你可以根据需要调整代码中的参数和可视化方式。