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([[1, 2], [1, 4], [1, 0],
... [4, 2], [4, 4], [4, 0]])
>>> clustering = AgglomerativeClustering().fit(X)
>>> clustering
AgglomerativeClustering()
>>> clustering.labels_
array([1, 1, 1, 0, 0, 0])
方法
方法 | 说明 |
---|---|
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 估计器实例 |