agnes树状图 python代码
时间: 2024-09-12 11:05:05 浏览: 59
Agnes树状图是一种用于展示数据聚类结果的图形表示方法,它是层次聚类算法的一种可视化形式。在Python中,可以使用`scipy`库中的`hierarchy`模块或`sklearn`库中的`AgglomerativeClustering`类,配合`matplotlib`库来绘制Agnes树状图。以下是一个简单的示例代码,展示如何使用`scipy`和`matplotlib`来生成Agnes树状图:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage, fcluster
from sklearn.datasets import load_iris
from sklearn.cluster import AgglomerativeClustering
# 加载示例数据集,这里使用Iris数据集
iris = load_iris()
X = iris.data
# 使用层次聚类算法计算链接距离矩阵
Z = linkage(X, 'ward')
# 设置绘制树状图的阈值,以确定聚类数量
plt.figure(figsize=(10, 7))
dendrogram(Z, labels=iris.target_names)
plt.show()
# 如果使用sklearn的层次聚类实现
cluster = AgglomerativeClustering(n_clusters=3, affinity='euclidean', linkage='ward')
cluster.fit(X)
labels = cluster.labels_
print("聚类标签:", labels)
# 生成并绘制sklearn风格的树状图
from sklearn.cluster import AgglomerativeClustering
import pandas as pd
import scipy.cluster.hierarchy as sch
plt.figure(figsize=(10, 7))
plt.title("Iris Dendrogram")
dend = sch.dendrogram(sch.linkage(X, method='ward'), labels=iris.target_names, orientation='top')
plt.xlabel("Sample index")
plt.ylabel("Distance")
plt.show()
```
这段代码首先加载了Iris数据集,然后使用`linkage`函数计算了层次聚类的链接距离矩阵,并用`dendrogram`函数绘制了树状图。在使用`sklearn`的情况下,我们使用`AgglomerativeClustering`类进行聚类,并使用`sch.dendrogram`函数绘制树状图。
阅读全文