在MATLAB上实现k均值聚类和凝聚式层次聚类算法
时间: 2024-05-10 17:19:16 浏览: 109
层次聚类算法,模糊C均值 层次聚类算法,matlab
5星 · 资源好评率100%
首先,我们需要先生成一个数据集来演示聚类算法。这里我们使用MATLAB内置的'gmdistribution'函数来生成一个包含4个聚类的高斯混合数据集。
```matlab
% 生成高斯混合数据集
rng(1); % 设置随机数种子,保证每次运行结果一致
gm = gmdistribution([1 1; -1 -1; 1 -1; -1 1], eye(2));
data = random(gm, 1000);
```
接下来,我们可以使用MATLAB内置的'kmeans'函数来实现k均值聚类算法。
```matlab
% k均值聚类算法
[idx, C] = kmeans(data, 4);
```
其中,'idx'为数据点所属聚类的编号,'C'为聚类中心的坐标。
接下来,我们可以使用MATLAB内置的'linkage'和'dendrogram'函数来实现凝聚式层次聚类算法。
```matlab
% 凝聚式层次聚类算法
Z = linkage(data);
dendrogram(Z);
```
其中,'Z'为聚类树的拓扑结构,'dendrogram'函数可以将聚类树以树形图的形式展示出来。
完整代码如下:
```matlab
% 生成高斯混合数据集
rng(1); % 设置随机数种子,保证每次运行结果一致
gm = gmdistribution([1 1; -1 -1; 1 -1; -1 1], eye(2));
data = random(gm, 1000);
% k均值聚类算法
[idx, C] = kmeans(data, 4);
% 凝聚式层次聚类算法
Z = linkage(data);
dendrogram(Z);
```
阅读全文