Python机器学习——Agglomerative层次聚类

2023-01-10 13:05:57

  层次聚类(hierarchical clustering)可在不同层次上对数据集进行划分,形成树状的聚类结构。AggregativeClustering是一种常用的层次聚类算法。
  其原理是:最初将每个对象看成一个簇,然后将这些簇根据某种规则被一步步合并,就这样不断合并直到达到预设的簇类个数。这里的关键在于:如何计算聚类簇之间的距离?
  由于每个簇就是一个集合,因此需要给出集合之间的距离。给定聚类簇 Ci,Cj ,有如下三种距离:

  • 最小距离:
    dmin(Ci,Cj)=minx⃗ iCi,x⃗ jCjdistance(x⃗ i,x⃗ j)
    它是两个簇的样本对之间距离的最小值。
  • 最大距离:
    dmax(Ci,Cj)=maxx⃗ iCi,x⃗ jCjdistance(x⃗ i,x⃗ j)
    它是两个簇的样本对之间距离的最大值。
  • 平均距离:
    davg(Ci,Cj)=1|Ci||Cj|x⃗ iCix⃗ jCjdistance(x⃗ i,x⃗ j)
    它是两个簇的样本对之间距离的平均值。

  当该算法的聚类簇采用 dmin 时,称为单链接single-linkage算法,当该算法的聚类簇采用 dmax 时,称为单链接complete-linkage算法,当该算法的聚类簇采用 davg 时,称为单链接average-linkage算法。

  下面给出算法:

  • 输入
    • 数据集 D= { x⃗ 1,x⃗ 2,...,x⃗ N }
    • 聚类簇距离度量函数
    • 聚类簇数量 K
  • 输出:簇划分
  • 作者:一叶_障目
  • 原文链接:https://blog.csdn.net/Haiyang_Duan/article/details/77995665
    更新时间:2023-01-10 13:05:57