当前位置:   article > 正文

【python-scipy】scipy.cluster.hierarchy 学习 & 总结 (fcluster, linkage等)

scipy.cluster.hierarchy

博主最近在依据scipy的手册学习,按每个模块进行记录,对scipy其他部分有疑惑的可以看一下博主的相关合集。p.s. 更新中

层级聚类原理

当我们需要对一个集合S中的元素进行聚类的时候,我们肯定预先有一个评价标准 d d d,用于计算任意两个节点a和b之间的距离 d ( a , b ) d(a,b) d(a,b),再依据计算的结果进行聚类。说得更清楚一些,有两个方式来实现聚类,一个是从单个到总体:我们首先将每个向量都当作一个类,利用 d d d计算出两两之间的距离,合并距离最小的两个,循环进行;另一个是从整体到单一:先把所有的看作同一类,利用 d d d计算出两两之间的距离,跳出距离最大的a,b,其他向量计算到a,b的距离进而分为2类,后续以此类推。
其实看到后面会发现,这个hierarchy cluster(层级聚类)在算法上是定死的,给我们留下的空间只在于选择何种评价标准 d d d。我们首先看看这个 d d d应该有哪些性质。

度量

数学上来讲,度量是一个二元函数 D × D → R ≥ 0 \mathbf{D} \times \mathbf{D} \rightarrow \mathbb{R}_{\geq 0} D×DR0,并且满足以下三条性质:

  • 非负性(分离性)
    d ( a , b ) ≥ 0 ( ∀ a , b ∈ D ) d(a,b) \geq 0 \quad (\forall a,b \in \mathbf{D})\quad d(a,b)0(a,bD) 并且 d ( a , b ) = 0   ⇔   a = b \quad d(a,b) = 0 \, \Leftrightarrow \, a = b d(a,b)=0a=b
  • 对称性
    d ( a , b )   = d ( b , a ) ( ∀ a , b ∈ D ) d(a,b) \, = d(b,a) \quad (\forall a,b \in \mathbf{D}) d(a,b)=d(b,a)(a,bD)
  • 三角不等式
    d ( a , c )   ≤   d ( a , b ) + d ( b , c ) ( ∀ a , b ,
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/774621
推荐阅读
相关标签
  

闽ICP备14008679号