scipy.cluster.hierarchy.is_monotonic¶
- scipy.cluster.hierarchy.is_monotonic(Z)[源代码]¶
如果传递的链接是单调的,则返回True。
如果对于每个簇,则链接是单调的 \(s\) 和 \(t\) 连接后,它们之间的距离不小于任何先前连接的群集之间的距离。
- 参数
- Zndarray
检查单调性的链接矩阵。
- 退货
- b布尔尔
指示链接是否单调的布尔值。
参见
linkage
有关链接矩阵是什么的说明,请参阅。
示例
>>> from scipy.cluster.hierarchy import median, ward, is_monotonic >>> from scipy.spatial.distance import pdist
根据定义,一些层次聚类算法-例如
scipy.cluster.hierarchy.ward
-产生样本到群集的单调分配;然而,这并不总是适用于其他分层方法-例如scipy.cluster.hierarchy.median
。给定一个链接矩阵
Z
(作为分层聚类方法的结果)我们可以使用以下命令以编程方式测试它是否具有单调性属性scipy.cluster.hierarchy.is_monotonic
:>>> 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. ]]) >>> is_monotonic(Z) True
>>> Z = median(pdist(X)) >>> Z array([[ 0. , 1. , 1. , 2. ], [ 3. , 4. , 1. , 2. ], [ 9. , 10. , 1. , 2. ], [ 6. , 7. , 1. , 2. ], [ 2. , 12. , 1.11803399, 3. ], [ 5. , 13. , 1.11803399, 3. ], [ 8. , 15. , 1.11803399, 3. ], [11. , 14. , 1.11803399, 3. ], [18. , 19. , 3. , 6. ], [16. , 17. , 3.5 , 6. ], [20. , 21. , 3.25 , 12. ]]) >>> is_monotonic(Z) False
请注意,此方法等同于仅验证链接矩阵的第三列中的距离按单调递增顺序出现。