SciPy–聚类层次树图
原文:https://www.geesforgeks.org/scipy-cluster-hierarchy-tred gram/
在本文中,我们将使用 python 中的 Scipy 模块了解集群层次树图。首先,我们将讨论以下相关概念:
层次聚类
分层聚类需要创建从上到下具有预定顺序的聚类。这是一种用于聚类未标记数据点的无监督机器学习算法。
如何表演?
- 每个数据点一开始都应该被视为一个集群。
- 将开始时的簇数表示为 k
- 通过组合两个最近的数据点形成一个聚类,从而产生 K-1 个聚类。
- 通过合并两个最接近的集群形成更多的集群,从而产生 K-2 集群。
- 重复以上四个步骤,直到创建一个大集群。
- 一旦一个集群被创建,树图就被用来划分成多个集群。
层次聚类的类型
1。分裂聚类
分裂聚类,也称为自上而下的聚类方法,将所有观察值分配给一个聚类,然后将该聚类划分为两个最不相似的聚类。
2。聚集聚类
在凝聚或自下而上的聚类方法中,每个观察值被分配到它自己的聚类中。
算法
1。单连杆
单链聚类通常产生这样的聚类,其中个体被顺序添加到单个组中。两个群集之间的距离定义为两个最近的数据点之间的距离。
L(a , b) = min(D(xai , xbj))
2。完成联动
完全连锁聚类通常产生分离良好且紧密的聚类。两个簇之间的距离被定义为每个簇中两个数据点之间的最长距离。
L(a , b) = max(D(xai , xbj))
3。简单平均值
简单平均算法将集群之间的距离定义为每个成员之间的平均距离,加权后两个集群对最终输出的影响相等。
L(a , b) = Tab / ( Na * Nb)
T<sub>ab</sub>: The sum of all pairwise distances between the two clusters.
N<sub>a and Nb</sub>: The sizes of the clusters a and b, respectively.
系统树图
树形图是一种树形图,用于可视化集群之间的关系。树形图中垂直线的距离越大,这些簇之间的距离就越大。解释树木图的关键是集中于任何两个物体连接在一起的高度。
树形图示例:
假设我们有六个集群:P、Q、R、S、T 和 u。散点图上显示的这六个观测值的集群层次树图为:
给定散点图的树木图
树形图的部分:
树形图的一部分
- 谱系图的分支叫做分支。这些分支是根据它们有多相似或不相似来排列的。
- 树形图的每个分支都有一片或多片叶子。p、Q、R、S、T 和 U 是树图的叶子:
- 三重(三叶):磷、钾、铬
- 双(双光):S,T
- 单(单叶):U
实现层次聚类和绘制树形图
为了实现层次聚类和绘制树图,我们将使用以下一些方法:
- 分级和聚集聚类的功能由分级模块提供。
- 为了执行分级聚类,使用scipy . cluster . hierarchy . linkage函数。该功能的参数有:
语法:scipy . cluster . hierarchy . linkage(n 数组、方法、度量、最优排序)
- 为了将分级聚类绘制为树形图使用了 scipy.cluster.hierarchy .树形图功能。
语法:scipy . cluster . hierarchy . tregram(Z,p,truncate_mode,color_threshold,get _ leaves,orientation,labels,count_sort,distance_sort,show_leaf_counts,no_plot,no_labels,leaf_font_size,leaf_rotation,leaf_label_func,show_contracted,link_color_func,ax,above _ threshold _ color)
例 1:正常树形图
计算机编程语言
# Python program to plot the hierarchical
# clustering dendrogram using SciPy
# Import the python libraries
import numpy as np
from scipy.cluster import hierarchy
import matplotlib.pyplot as plt
# Create an array
x = np.array([100., 200., 300., 400., 500., 250.,
450., 280., 450., 750.])
# Plot the hierarchical clustering as a dendrogram.
temp = hierarchy.linkage(x, 'single')
plt.figure()
dn = hierarchy.dendrogram(
temp, above_threshold_color="green", color_threshold=.7)
输出:
示例 2:使用水平方向的树图:
计算机编程语言
# Plot the dendrogram in horizontal orientation
# Import the python libraries
import numpy as np
from scipy.cluster import hierarchy
import matplotlib.pyplot as plt
# Create an array
x = np.array([100., 200., 300., 400., 500., 250.,
450., 280., 450., 750.])
# Plot the hierarchical clustering as a dendrogram.
temp = hierarchy.linkage(x, 'single')
plt.figure()
dn = hierarchy.dendrogram(
temp, above_threshold_color="green", color_threshold=.7, orientation='right')
输出:
scipy . cluster . hierarchy . tregram 的参数方位已设置为【右侧】。它在右边绘制根,在左边绘制后代链接。