scipy.cluster.hierarchy教程

时间:2014-02-07 21:32:26

标签: python scipy hierarchical-clustering

我正在尝试理解如何操作层次结构集群,但文档太......技术性?......我无法理解它是如何工作的。

是否有任何教程可以帮助我开始,逐步解释一些简单的任务?

假设我有以下数据集:

a = np.array([[0,   0  ],
              [1,   0  ],
              [0,   1  ],
              [1,   1  ], 
              [0.5, 0  ],
              [0,   0.5],
              [0.5, 0.5],
              [2,   2  ],
              [2,   3  ],
              [3,   2  ],
              [3,   3  ]])

我可以轻松地完成层次结构聚类并绘制树形图:

z = linkage(a)
d = dendrogram(z)
  • 现在,我如何恢复特定群集?让我们说一下在树形图中有元素[0,1,2,4,5,6]的那个?
  • 我如何取回那些元素的价值?

1 个答案:

答案 0 :(得分:61)

分层凝聚聚类(HAC)有三个步骤:

  1. 量化数据(metric参数)
  2. 群集数据(method参数)
  3. 选择群集数量
  4. 否则

    z = linkage(a)
    

    将完成前两个步骤。由于您未指定任何参数,因此使用标准值

    1. metric = 'euclidean'
    2. method = 'single'
    3. 因此,z = linkage(a)将为您提供a的单个链接层次凝聚聚类。这种聚类是一种解决方案的层次结构。从此层次结构中,您可以获得有关数据结构的一些信息。你现在可以做的是:

      • 检查哪个metric是合适的,e。 G。 cityblockchebychev会以不同方式量化您的数据(cityblockeuclideanchebychev对应L1L2和{ {1}}规范)
      • 检查L_inf的不同属性/行为(例如methdossinglecomplete
      • 检查如何确定群集的数量,例如: G。 reading the wiki about it
      • 在找到的解决方案(聚类)上计算索引,例如silhouette coefficient(使用此系数,您可以获得有关点/观察点与群集分配的群集的匹配程度的质量的反馈) 。不同的索引使用不同的标准来限定聚类。

      这是从

      开始的
      average

      给出 enter image description here