kmeans聚类算法matlab代码怎么写
时间: 2023-06-10 19:08:51 浏览: 106
以下是一个简单的 K-means 聚类算法的 MATLAB 代码实现:
```matlab
% 数据集
data = [1 1; 1.5 2; 3 4; 5 7; 3.5 5; 4.5 5; 3.5 4.5];
% 聚类数
k = 2;
% 随机初始化聚类中心
centroids = datasample(data, k, 'Replace', false);
% 最大迭代次数
max_iters = 10;
for i = 1:max_iters
% 计算每个样本点到聚类中心的距离
distances = pdist2(data, centroids);
% 分配每个样本点到最近的聚类中心
[~, idx] = min(distances, [], 2);
% 更新聚类中心
for j = 1:k
centroids(j, :) = mean(data(idx == j, :));
end
end
% 绘制聚类结果
colors = 'rgbmkc';
figure;
hold on;
for i = 1:k
scatter(data(idx == i, 1), data(idx == i, 2), 36, colors(i), 'filled');
end
scatter(centroids(:, 1), centroids(:, 2), 100, 'k', 'filled', 'Marker', 'x');
```
在这个代码中,我们首先定义了一个数据集 `data`,然后指定了聚类数 `k`。接着,我们随机初始化了 `k` 个聚类中心,并设置了最大迭代次数 `max_iters`。在主循环中,我们计算了每个样本点到聚类中心的距离,然后将每个样本点分配给最近的聚类中心。最后,我们根据聚类结果绘制了散点图,并将聚类中心用叉子标出来。
请注意,这只是 K-means 算法的一个简单实现。在实际应用中,可能需要对初始化方法、距离度量、迭代终止条件等进行更细致的调整。
阅读全文