聚合聚类层次分析法,sklearn自己制作数据集,完整代码,可视化
时间: 2023-08-16 21:06:06 浏览: 171
基于层次聚类(HC)的数据聚类可视化,matlab代码,数据为Excel格式
好的,以下是使用聚合聚类层次分析法进行数据聚类的完整代码,并包括可视化结果:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import AgglomerativeClustering
from sklearn.datasets import make_blobs
from scipy.cluster.hierarchy import dendrogram
# 生成随机数据集
X, y = make_blobs(n_samples=50, centers=3, random_state=42)
# 创建聚合聚类模型
model = AgglomerativeClustering(n_clusters=3)
# 拟合数据
model.fit(X)
# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=model.labels_, cmap='rainbow')
plt.show()
# 绘制树状图
def plot_dendrogram(model, **kwargs):
"""
画出树状图
"""
# 创建距离矩阵
distances = model.distances_
# 计算连线
linkage_matrix = np.column_stack([model.children_, distances, np.zeros_like(distances)])
# 画图
dendrogram(linkage_matrix, **kwargs)
plt.title('Hierarchical Clustering Dendrogram')
plot_dendrogram(model, truncate_mode='level', p=3)
plt.xlabel("Number of points in node (or index of point if no parenthesis).")
plt.show()
```
在代码中,我们使用 `make_blobs` 方法生成了一个包含 50 个样本和 3 个中心的数据集。然后,我们创建了一个 `AgglomerativeClustering` 模型,并将其拟合到数据集中。最后,我们使用 `plt.scatter` 方法可视化了聚类结果,并使用 `plot_dendrogram` 方法绘制了树状图。
树状图可以帮助我们更好地理解聚类的过程和结果。在树状图中,横轴表示样本点的索引,纵轴表示样本点之间的距离。每个竖直线段表示两个样本点之间的距离,横坐标为这两个样本点的索引。在树状图的底部,我们可以看到每个样本点的编号。在树状图的顶部,我们可以看到聚类结果。例如,在本例中,我们可以看到最终的聚类结果包含 3 个簇。
阅读全文