sklearn.cluster.AgglomerativeClustering

class sklearn.cluster.AgglomerativeClustering(n_clusters=2, *, affinity='euclidean', memory=None, connectivity=None, compute_full_tree='auto', linkage='ward', distance_threshold=None)

[源码]

凝聚聚类

递归地合并成对聚类,以最小的方式增加给定的链接距离。

用户指南中阅读更多内容。

参数 说明
n_clusters int or None, default=2
要查找的聚类数目。如果distance_threshold 不是None, 它就必须是None
affinity str or callable, default=’euclidean’
用于计算连接的度量。可以是“euclidean”, “l1”, “l2”, “manhattan”, “cosine”, 或者“precomputed”。如果linkage是“ward”, 只有“euclidean”是被接受的。
如果“precomputed”,则需要一个距离矩阵(而不是相似矩阵)作为拟合方法的输入。
memory str or object with the joblib.Memory interface, default=None
用于储存树计算的输出。默认情况下,不执行缓存。如果给出一个字符串,它就是缓存目录的路径。
connectivity array-like or callable, default=None
连接矩阵。为每个样本定义遵循给定数据结构的相邻样本。这可以是连接矩阵本身,也可以是可调用的,能将数据转换为连接矩阵,例如从kneighbors_graph派生的连接矩阵。默认为None,分层聚类算法是一种非结构化的聚类算法。
compute_full_tree ‘auto’ or bool, default=’auto’
提前停止n_clusters树的构建。如果聚类的数量与样本数相比并不少,这对于减少计算时间是非常有用的。此选项仅在指定连接矩阵时才有用。还请注意,当改变聚类数量并使用缓存时,计算所有树可能更有利。如果distance_threshold是None, 它必须是True。通过默认的compute_full_tree设置是“auto”, 当distance_threshold不是None的时候就等价于True,或者n_clusters的最大值在100~0.02 * n_samples之间。否则,“auto”等同False。
linkage {“ward”, “complete”, “average”, “single”}, default=”ward”
使用哪种联动标准。该算法将合并聚类,以最小化这一标准。
- Ward最小化会合并的聚类的差异。
- 平均使用两组每次观测的平均距离。
- 完全或最大连接使用两个集合的所有观测值之间的最大距离。
- 单次使用两组所有观测值之间的最小距离。
distance_threshold float, default=None
连接距离阈值高于该阈值,聚类将不会合并。如果不是None,则n_clusters必须为None,并且compute_full_tree必须为True。

新版本0.21。

属性 说明
n_clusters_ int
通过算法找到的聚类数。如果distance_threshold=None=None,则它将等价于给定的n_clusters
labels_ ndarray of shape (n_samples)
每一点的聚类标签
n_leaves_ int
层次树中的叶子节点数
n_connected_components_ int
图中连通分量的估计数

新版本0.21中:n_connected_components_被添加以代替n_components_
children_ array-like of shape (n_samples-1, 2)
每个非叶节点的子节点。小于n_samples的值对应于原始样本树的叶子。大于或等于n_samples的节点i是一个非叶节点,具有子节点children_[i - n_samples]。或者,在第i次迭代时,将children[i][0]和children[i][1]合并成节点n_samples + i

示例

>>> from sklearn.cluster import AgglomerativeClustering
>>> import numpy as np
>>> X = np.array([[12], [14], [10],
...               [42], [44], [40]])
>>> clustering = AgglomerativeClustering().fit(X)
>>> clustering
AgglomerativeClustering()
>>> clustering.labels_
array([111000])

方法

方法 说明
fit(self, X[, y]) 根据特征或距离矩阵进行层次聚类拟合
fit_predict(self, X[, y]) 根据特征或距离矩阵拟合分层聚类,并返回聚类标签。
get_params(self[, deep]) 获取此估计器的参数
set_params(self, **params) 设置此估计器的参数
__init__(self, n_clusters=2, *, affinity='euclidean', memory=None, connectivity=None, compute_full_tree='auto', linkage='ward', distance_threshold=None)

[源码]

初始化self。请参阅help(type(self))以获得准确的说明。

fit(self, X, y=None)

[源码]

根据特征或距离矩阵进行层次聚类拟合

参数 说明
X array-like, shape (n_samples, n_features) or (n_samples, n_samples)
要聚类的训练实例,或实例之间的距离, 如果affinity='precomputed'
y Ignored
未使用,在此按约定呈现为API一致性。
返回值 说明
self -
fit_predict(self, X, y=None)

[源码]

根据特征或距离矩阵进行层次聚类拟合

参数 说明
X array-like, shape (n_samples, n_features) or (n_samples, n_samples)
要聚类的训练实例,或实例之间的距离, 如果affinity='precomputed'
y Ignored
未使用,在此按约定呈现为API一致性。
返回值 说明
labels ndarray, shape (n_samples,)
聚类标签
get_params(self, deep=True)

[源码]

获取此估计器的参数

表格 说明
deep bool, default=True
如果为True,则将返回此估计器的参数和所包含的作为估计量的子对象。
返回值 说明
params mapping of string to any
映射到其值的参数名称
set_params(self, **params)

[源码]

设置此估计器的参数

该方法适用于简单估计器以及嵌套对象(例如pipelines)。后者具有表单的 <component>__<parameter>参数,这样就可以更新嵌套对象的每个组件。

参数 说明
**params dict
估计器参数
返回值 说明
self object
估计器实例