四、AgglomerativeClustering

  1. AgglomerativeClusteringscikit-learn提供的一种层次聚类模型。其原型为:

    1. class sklearn.cluster.AgglomerativeClustering(n_clusters=2, affinity='euclidean',
    2. memory=Memory(cachedir=None), connectivity=None, n_components=None,
    3. compute_full_tree='auto', linkage='ward', pooling_func=<function mean>)
    • n_clusters:一个整数,指定簇的数量。

    • connectivity:一个数组或者可调用对象或者为None,用于指定连接矩阵。它给出了每个样本的可连接样本。

    • affinity:一个字符串或者可调用对象,用于计算距离。可以为:'euclidean', 'l1', 'l2', 'manhattan', 'cosine', 'precomputed'

      如果linkage='ward',则 'affinity必须是 'euclidean'

    • memory:用于缓存输出的结果,默认为不缓存。如果给定一个字符串,则表示缓存目录的路径。

    • n_components:将在scikit-learn v 0.18中移除

    • compute_full_tree:通常当已经训练了n_clusters之后,训练过程就停止。

      但是如果compute_full_tree=True,则会继续训练从而生成一颗完整的树。

    • linkage:一个字符串,用于指定链接算法。

      • 'ward':采用方差恶化距离variance incress distance
      • 'complete':全链接complete-linkage算法,采用 四、AgglomerativeClustering - 图1
      • 'average':均链接average-linkage算法,采用 四、AgglomerativeClustering - 图2
      • 'single':单链接single-linkage算法,采用 四、AgglomerativeClustering - 图3
    • pooling_func:即将被废弃的接口。
  2. 属性:

    • labels_:一个形状为[n_samples,] 的数组,给出了每个样本的簇标记。
    • n_leaves_:一个整数,给出了分层树的叶结点数量。
    • n_components_:一个整数,给除了连接图中的连通分量的估计值。
    • children_:一个形状为[n_samples-1,2]数组,给出了每个非叶结点中的子节点数量。
  3. 方法:

    • fit(X[, y]):训练模型。
    • fit_predict(X[, y]):训练模型并执行聚类,返回每个样本所属的簇标记。