k-means matlab代码
时间: 2023-09-26 14:09:57 浏览: 61
k-means聚类算法的MATLAB代码如下:
1. 定义数据集
```matlab
data = [x1, y1;
x2, y2;
...
xn, yn];
```
2. 初始化k个聚类中心
```matlab
k = 3; % 假设有3类
center = datasample(data, k, 'Replace', false);
```
3. 开始迭代
```matlab
maxIter = 100; % 迭代次数
for i = 1:maxIter
% 计算每个点到k个聚类中心的欧几里德距离
dist = pdist2(data, center);
% 将每个点分配到距离最近的聚类中心所在的类别
[~, label] = min(dist, [], 2);
% 更新每个聚类中心的位置,即取每个类别中所有点的均值
for j = 1:k
center(j, :) = mean(data(label==j, :));
end
end
```
4. 结果可视化
```matlab
% 将每个类别中的点用不同颜色表示出来
figure;
scatter(data(label==1, 1), data(label==1, 2), 'r');
hold on;
scatter(data(label==2, 1), data(label==2, 2), 'g');
scatter(data(label==3, 1), data(label==3, 2), 'b');
% 显示聚类中心
scatter(center(:, 1), center(:, 2), 'k', 'filled');
```
阅读全文