本文简要介绍 python 语言中 scipy.cluster.hierarchy.fcluster
的用法。
用法:
scipy.cluster.hierarchy.fcluster(Z, t, criterion='inconsistent', depth=2, R=None, monocrit=None)#
从给定的链接矩阵定义的层次聚类中形成平面聚类。
- Z: ndarray
用
linkage
函数返回的矩阵编码的层次聚类。- t: 标量
- 对于标准‘inconsistent’, ‘distance’或‘monocrit’,
这是形成扁平集群时应用的阈值。
- 对于 ‘maxclust’ 或 ‘maxclust_monocrit’ 标准,
这将是请求的最大集群数。
- criterion: str,可选
用于生成扁平集群的标准。这可以是以下任何值:
inconsistent
:If a cluster node and all its descendants have an inconsistent value less than or equal to t, then all its leaf descendants belong to the same flat cluster. When no non-singleton cluster meets this criterion, every node is assigned to its own cluster. (Default)
distance
:Forms flat clusters so that the original observations in each flat cluster have no greater a cophenetic distance than t.
maxclust
:Finds a minimum threshold
r
so that the cophenetic distance between any two original observations in the same flat cluster is no more thanr
and no more than t flat clusters are formed.monocrit
:Forms a flat cluster from a cluster node c with index i when
monocrit[j] <= t
.For example, to threshold on the maximum mean distance as computed in the inconsistency matrix R with a threshold of 0.8 do:
MR = maxRstat(Z, R, 3) fcluster(Z, t=0.8, criterion='monocrit', monocrit=MR)
maxclust_monocrit
:Forms a flat cluster from a non-singleton cluster node
c
whenmonocrit[i] <= r
for all cluster indicesi
below and includingc
.r
is minimized such that no more thant
flat clusters are formed. monocrit must be monotonic. For example, to minimize the threshold t on maximum inconsistency values so that no more than 3 flat clusters are formed, do:MI = maxinconsts(Z, R) fcluster(Z, t=3, criterion='maxclust_monocrit', monocrit=MI)
- depth: 整数,可选
执行不一致性计算的最大深度。它对其他标准没有意义。默认值为 2。
- R: ndarray,可选
用于
'inconsistent'
标准的不一致矩阵。如果未提供,则计算该矩阵。- monocrit: ndarray,可选
长度为 n-1 的数组。单体[i]是对非单例 i 进行阈值处理的统计量。 monocrit 向量必须是单调的,即给定一个索引为 i 的节点 c,对于所有节点索引 j 对应于 c 以下的节点,
monocrit[i] >= monocrit[j]
.
- fcluster: ndarray
长度为
n
的数组。T[i]
是原始观测值i
所属的平面簇号。
参数 ::
返回 ::
例子:
>>> from scipy.cluster.hierarchy import ward, fcluster >>> from scipy.spatial.distance import pdist
所有集群链接方法 - 例如,
scipy.cluster.hierarchy.ward
生成链接矩阵Z
作为其输出:>>> X = [[0, 0], [0, 1], [1, 0], ... [0, 4], [0, 3], [1, 4], ... [4, 0], [3, 0], [4, 1], ... [4, 4], [3, 4], [4, 3]]
>>> Z = ward(pdist(X))
>>> Z array([[ 0. , 1. , 1. , 2. ], [ 3. , 4. , 1. , 2. ], [ 6. , 7. , 1. , 2. ], [ 9. , 10. , 1. , 2. ], [ 2. , 12. , 1.29099445, 3. ], [ 5. , 13. , 1.29099445, 3. ], [ 8. , 14. , 1.29099445, 3. ], [11. , 15. , 1.29099445, 3. ], [16. , 17. , 5.77350269, 6. ], [18. , 19. , 5.77350269, 6. ], [20. , 21. , 8.16496581, 12. ]])
这个矩阵表示一个树状图,其中第一个和第二个元素是每一步合并的两个簇,第三个元素是这些簇之间的距离,第四个元素是新簇的大小——包含的原始数据点的数量.
scipy.cluster.hierarchy.fcluster
可用于展平树状图,从而将原始数据点分配给单个簇。此分配主要取决于距离阈值
t
- 允许的最大簇间距离:>>> fcluster(Z, t=0.9, criterion='distance') array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], dtype=int32)
>>> fcluster(Z, t=1.1, criterion='distance') array([1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8], dtype=int32)
>>> fcluster(Z, t=3, criterion='distance') array([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4], dtype=int32)
>>> fcluster(Z, t=9, criterion='distance') array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=int32)
第一种情况,阈值
t
太小,无法让数据中的任意两个样本形成一个簇,所以返回了12个不同的簇。在第二种情况下,阈值足够大以允许前 4 个点与其最近的邻居合并。所以,这里只返回 8 个簇。
第三种情况,具有更高的阈值,最多允许连接 8 个数据点 - 因此此处返回 4 个集群。
最后,第四种情况的阈值足够大,可以将所有数据点合并在一起——因此返回单个集群。
相关用法
- Python SciPy hierarchy.fclusterdata用法及代码示例
- Python SciPy hierarchy.from_mlab_linkage用法及代码示例
- Python SciPy hierarchy.ward用法及代码示例
- Python SciPy hierarchy.maxRstat用法及代码示例
- Python SciPy hierarchy.set_link_color_palette用法及代码示例
- Python SciPy hierarchy.median用法及代码示例
- Python SciPy hierarchy.DisjointSet用法及代码示例
- Python SciPy hierarchy.correspond用法及代码示例
- Python SciPy hierarchy.is_isomorphic用法及代码示例
- Python SciPy hierarchy.optimal_leaf_ordering用法及代码示例
- Python SciPy hierarchy.maxinconsts用法及代码示例
- Python SciPy hierarchy.cut_tree用法及代码示例
- Python SciPy hierarchy.to_tree用法及代码示例
- Python SciPy hierarchy.average用法及代码示例
- Python SciPy hierarchy.dendrogram用法及代码示例
- Python SciPy hierarchy.num_obs_linkage用法及代码示例
- Python SciPy hierarchy.inconsistent用法及代码示例
- Python SciPy hierarchy.complete用法及代码示例
- Python SciPy hierarchy.linkage用法及代码示例
- Python SciPy hierarchy.maxdists用法及代码示例
- Python SciPy hierarchy.is_valid_im用法及代码示例
- Python SciPy hierarchy.centroid用法及代码示例
- Python SciPy hierarchy.single用法及代码示例
- Python SciPy hierarchy.is_monotonic用法及代码示例
- Python SciPy hierarchy.cophenet用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.cluster.hierarchy.fcluster。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。