python实现层次聚类算法,对聚类模型进行评估,并可视化的代码
时间: 2024-12-20 19:17:39 浏览: 25
要实现层次聚类算法(Hierarchical Clustering)并进行评估和可视化,你可以使用`scipy`库中的`cluster.hierarchy`模块。以下是一个简单的步骤概述:
1. 导入所需的库[^1]:
```python
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt
import numpy as np
```
2. 准备数据:
假设你有一个二维数据集`data`:
```python
# 假设 data 是一个二维数组,如用户的购买记录或其他相似的数据
data = ...
```
3. 计算距离矩阵:
```python
dist_matrix = pdist(data, metric='euclidean') # 使用欧式距离计算
Z = linkage(dist_matrix, method='ward') # 这里使用 ward 方法,其他方法有单连接、完全连接等
```
4. 可视化树状图:
```python
plt.figure(figsize=(10, 5))
dendrogram(Z)
plt.xlabel('顾客')
plt.ylabel('distance')
plt.title('层次聚类 dendrogram')
plt.show()
```
5. 划分簇:
从树状图中决定切分点以形成簇。这通常是手动选择,也可以使用特定的阈值:
```python
cut_point = ... # 根据 dendrogram 图形确定切分点
clusters = fcluster(Z, cut_point, criterion='maxclust') # 根据指定的簇数
```
6. 模型评估[^2]:
常见的评估指标包括轮廓系数(Silhouette Coefficient)。这里仅给出计算轮廓系数的代码片段,完整实现可能需要结合具体库如`sklearn.metrics`:
```python
from sklearn.metrics import silhouette_score
score = silhouette_score(data, clusters)
print(f"平均轮廓系数: {score}")
```
阅读全文