层次聚类算法的优缺点解析 层次聚类算法解析( 四 )


plt.figure(figsize=(10, 7))
plt.title(“Dendrograms”)
dend = shc.dendrogram(shc.linkage(data_scaled, method=’ward’))
x轴包含样本,y轴表示这些样本之间的距离 。最大距离的垂直线是蓝线,因此我们可以确定阈值为6并切割树形图:
plt.figure(figsize=(10, 7))
plt.title(“Dendrograms”)
dend = shc.dendrogram(shc.linkage(data_scaled, method=’ward’))
plt.axhline(y=6, color=’r’, linestyle=’–‘)
我们有两个簇,因为这条线在两点切割树状图 。现在让我们为2个集群应用层次聚类:
from sklearn.cluster import AgglomerativeClustering
cluster = AgglomerativeClustering(n_clusters=2, affinity=’euclidean’, linkage=’ward’)
cluster.fit_predict(data_scaled)
我们可以在输出中看到0和1的值,因为我们定义了2个簇 。0表示属于第一个簇的点,1表示第二个簇中的点 。现在让我们想象两个集群:
plt.figure(figsize=(10, 7))
plt.scatter(data_scaled[‘Milk’], data_scaled[‘Grocery’], c=cluster.labels_)
真棒!我们可以清楚地看到这两个集群 。这就是我们如何在Python中实现层次聚类 。
结语
层次聚类是一种非常有用的观测分段方法 。不必预先定义集群数量的优点使其比k-Means更具优势 。

推荐阅读