python层次聚类算法用法
时间: 2023-09-10 22:11:01 浏览: 93
Python的`scipy`库提供了层次聚类的实现。以下是一个简单的示例:
```python
from scipy.cluster.hierarchy import linkage, dendrogram
import matplotlib.pyplot as plt
import numpy as np
# 创建一个随机数据集
X = np.random.rand(10, 2)
# 使用ward方法进行层次聚类
Z = linkage(X, 'ward')
# 绘制树状图
fig = plt.figure(figsize=(25, 10))
dn = dendrogram(Z)
plt.show()
```
在上面的代码中,首先生成一个随机的数据集 `X`,然后使用 `linkage` 函数进行层次聚类,其中 `ward` 方法是用于计算距离的方法。最后,使用 `dendrogram` 函数绘制树状图。
在实际应用中,您需要根据自己的数据集选择不同的距离计算方法和聚类方法。此外,还可以使用 `fcluster` 函数将聚类结果转换为固定数量的聚类。例如,以下代码将数据集转换为3个聚类:
```python
from scipy.cluster.hierarchy import fcluster
max_d = 1.5
clusters = fcluster(Z, max_d, criterion='distance')
print(clusters)
```
在上面的代码中,`max_d` 是聚类的最大距离,`criterion` 参数是用于指定距离的度量方式。`fcluster` 函数返回每个数据点所属的聚类编号。
阅读全文