用matlab编写一个关于kmeans聚类算法的代码
时间: 2023-09-20 09:15:10 浏览: 77
以下是一个简单的 K-means 聚类算法的 Matlab 代码:
```matlab
% 生成随机数据
data = rand(50, 2);
% 设定聚类数目
k = 3;
% 生成随机初始质心
centroids = data(randperm(size(data, 1), k), :);
% 迭代计算
for iter = 1:10
% 计算每个数据点到质心的距离
distances = pdist2(data, centroids);
% 找到距离最近的质心
[~, labels] = min(distances, [], 2);
% 更新质心位置
for i = 1:k
centroids(i, :) = mean(data(labels == i, :), 1);
end
end
% 可视化结果
scatter(data(:, 1), data(:, 2), 10, labels);
hold on;
scatter(centroids(:, 1), centroids(:, 2), 50, 'r', 'filled');
```
该代码首先生成了一个大小为 50x2 的随机数据矩阵,然后设定聚类数目为 3。接着,它生成了随机的初始质心,然后开始迭代计算。在每一次迭代中,它首先计算每个数据点到质心的距离,然后找到距离最近的质心,并将每个数据点分配给相应的簇。接着,它更新每个簇的质心位置。完成迭代之后,该代码将结果可视化,将每个数据点按簇标签进行着色,并将质心位置用红色圆点标出。
阅读全文