层次类聚算法python
时间: 2023-10-24 12:22:08 浏览: 69
层次聚类是一种无监督学习算法,它通过将数据点逐渐聚合成不同的群集来组织数据。Python中有许多现成的库可以实现层次聚类,其中最流行的是scikit-learn和SciPy。
下面是一个使用SciPy实现层次聚类的简单示例:
```python
import numpy as np
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt
# 生成随机数据
np.random.seed(4711)
a = np.random.normal(size=(100,2))
b = np.random.normal(loc=5, size=(50,2))
c = np.random.normal(loc=10, size=(50,2))
X = np.concatenate((a,b,c))
# 层次聚类
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., # 旋转x轴标签
leaf_font_size=8., # x轴标签字体大小
)
plt.show()
```
该示例使用`numpy`生成随机数据,并使用`linkage`函数将数据进行层次聚类。然后使用`dendrogram`函数绘制树状图,显示数据点如何聚合成群集。
注意,在此示例中使用“ward”作为链接标准。这是一种常用的链接标准,它将群集间的方差最小化。但是,需要根据应用程序的特定要求选择适当的链接标准。
这只是一个简单的示例,层次聚类在实际应用中可能会涉及更多的数据预处理,例如特征缩放和降维等。
阅读全文