层次聚合Python例子
时间: 2023-06-19 14:10:48 浏览: 90
层次聚合(Hierarchical Agglomerative Clustering,HAC)是一种聚类算法,可以将数据集中的数据点分成不同的簇。在Python中,我们可以使用SciPy库的hierarchy模块来实现层次聚合。
以下是一个层次聚合的Python示例代码:
```python
import numpy as np
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt
# 生成随机数据
np.random.seed(0)
X = np.random.randn(10, 2)
# 计算距离矩阵
Z = linkage(X, 'ward')
# 绘制树状图
plt.figure(figsize=(10, 5))
plt.title('Hierarchical Clustering Dendrogram')
plt.xlabel('sample index')
plt.ylabel('distance')
dendrogram(Z)
plt.show()
```
这段代码首先使用NumPy生成了10个二维随机数据点,然后使用Scipy的linkage函数计算距离矩阵。最后,使用dendrogram函数绘制树状图,展示层次聚合的结果。
输出结果将是一张树状图,其中每个叶子节点代表一个数据点,每个内部节点代表一个聚类,不同颜色的线段表示不同的聚类。您可以根据需要调整参数和数据集,以获得适合您应用程序的聚类结果。
相关问题
层次聚合python例子
层次聚合(Hierarchical Agglomerative Clustering)是一种聚类算法,它从单个数据点开始,将最相似的点合并成一个集群,直到所有数据点都被分配到一个集群中。
以下是一个使用Python实现层次聚合的例子:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
# 生成随机数据
np.random.seed(0)
X = np.random.rand(10, 2)
# 层次聚合
Z = linkage(X, 'single')
# 绘制树状图
plt.figure(figsize=(12, 6))
dendrogram(Z)
plt.show()
```
在这个例子中,我们使用NumPy生成10个随机数据点,然后使用SciPy的`linkage`函数将它们聚合起来。`linkage`函数的第二个参数指定聚合算法,这里使用的是单链接(single-linkage)算法,它将两个集群之间的距离定义为它们中距离最近的两个点之间的距离。
最后,我们使用Matplotlib绘制了一个树状图,它展示了每个数据点的分配情况以及集群之间的相似性。
python实现对鸢尾花数据集的层次聚类
Python实现对鸢尾花数据集的层次聚类可以使用scikit-learn库中的AgglomerativeClustering模块。AgglomerativeClustering模块使用自下而上的聚合策略,即每个样本点都被视为一个单独的簇,然后逐渐合并相邻的簇,直到满足特定的停止准则为止。
下面是一个简单的代码示例:
```python
from sklearn.datasets import load_iris
from sklearn.cluster import AgglomerativeClustering
import numpy as np
iris = load_iris()
X = iris.data
y = iris.target
# 构建层次聚类模型
model = AgglomerativeClustering(n_clusters=3)
# 对数据进行拟合
model.fit(X)
# 输出预测结果
y_pred = model.labels_
print(y_pred)
# 输出相关性矩阵
corr_matrix = np.round(np.corrcoef(X.T), 2)
print(corr_matrix)
```
在这个例子中,我们首先导入鸢尾花数据集,并将其分为数据和标签。然后,我们使用AgglomerativeClustering模块来构建层次聚类模型,并使用n_clusters参数指定簇的数量。接下来,我们对数据进行拟合,并输出预测结果。最后,我们输出相关性矩阵,以便更好地理解聚类结果。
阅读全文