层次聚类中将阈值下所得不同簇的样本点用不同颜色显示,完成聚类结果的可视化
时间: 2024-03-22 13:39:11 浏览: 121
基于层次聚类(HC)的数据聚类可视化,matlab代码,数据为Excel格式
好的,层次聚类中将阈值下所得不同簇的样本点用不同颜色显示是一个很常见的可视化方法,可以直观地展示出聚类的结果。下面是一个简单的可视化代码示例:
```python
import numpy as np
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt
# 生成随机样本数据
np.random.seed(4711)
a = np.random.multivariate_normal([10,0], [[3,1], [1,4]], size=[100,])
b = np.random.multivariate_normal([0,20], [[3,1], [1,4]], size=[50,])
X = np.concatenate((a, b),)
print(X.shape) # (150, 2)
# 计算距离矩阵
Z = linkage(X, 'ward')
# 绘制树状图
plt.figure(figsize=(25, 10))
plt.title('Hierarchical Clustering Dendrogram')
plt.xlabel('sample index')
plt.ylabel('distance')
dendrogram(Z, leaf_rotation=90., leaf_font_size=8.)
plt.show()
# 设置阈值,将簇用不同颜色显示
threshold = 50
color_threshold = Z[-(threshold-1), 2]
clusters = fcluster(Z, threshold, criterion='distance')
plt.figure(figsize=(10, 8))
plt.scatter(X[:,0], X[:,1], c=clusters, cmap='prism')
plt.title(f'Hierarchical Clustering (threshold={threshold}, color_threshold={color_threshold:.2f})')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
```
这里使用了 Scipy 库中的 dendrogram 和 linkage 函数进行层次聚类,然后根据设定的阈值 threshold 对样本点进行聚类,并用不同颜色显示不同簇。其中 cmap='prism' 表示使用彩虹色系来显示不同簇,可以根据需要自行调整。
阅读全文