AgglomerativeClustering#

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

凝聚聚类。

递归地合并样本数据的对簇;使用链接距离。

更多信息请参阅 用户指南

Parameters:
n_clustersint 或 None, 默认=2

要找到的簇的数量。如果 distance_threshold 不是 None ,则必须为 None

metricstr 或 callable, 默认=”euclidean”

用于计算链接的度量。可以是 “euclidean”, “l1”, “l2”, “manhattan”, “cosine” 或 “precomputed”。如果链接是 “ward”,则只接受 “euclidean”。如果为 “precomputed”,则需要为 fit 方法输入一个距离矩阵。

Added in version 1.2.

Deprecated since version 1.4: metric=None 在 1.4 中已弃用,并将在 1.6 中移除。请将 metric 设为默认值(即 "euclidean" )。

memorystr 或具有 joblib.Memory 接口的对象, 默认=None

用于缓存树的计算输出的对象。默认情况下,不进行缓存。如果给定一个字符串,则是缓存目录的路径。

connectivityarray-like, sparse matrix 或 callable, 默认=None

连接矩阵。定义每个样本的邻近样本,遵循数据的给定结构。这可以是一个连接矩阵本身,或一个将数据转换为连接矩阵的可调用对象,例如从 kneighbors_graph 派生的。默认是 None ,即层次聚类算法是无结构的。

有关使用 kneighbors_graph 的连接矩阵示例,请参见 带有和不带有结构的凝聚聚类

compute_full_tree‘auto’ 或 bool, 默认=’auto’

n_clusters 处提前停止树的构建。如果簇的数量不小于样本数量的情况下,这有助于减少计算时间。此选项仅在指定连接矩阵时有效。还请注意,当改变簇的数量并使用缓存时,计算完整的树可能是有利的。如果 distance_threshold 不是 None ,则必须为 True 。默认情况下 compute_full_tree 是 “auto”,当 distance_threshold 不是 Nonen_clusters 小于 100 或 0.02 * n_samples 的最大值时,等同于 True 。否则,”auto” 等同于 False

linkage{‘ward’, ‘complete’, ‘average’, ‘single’}, 默认=’ward’

使用哪种链接标准。链接标准确定用于观察集之间的距离。算法将合并使该标准最小化的簇对。

  • ‘ward’ 最小化正在合并的簇的方差。

  • ‘average’ 使用两组中每个观察的平均距离。

  • ‘complete’ 或 ‘maximum’ 链接使用两组中所有观察之间的最大距离。

  • ‘single’ 使用两组中所有观察之间的最小距离。

Added in version 0.20: 添加了 ‘single’ 选项

有关比较不同 linkage 标准的示例,请参见 对比不同层次聚类方法在玩具数据集上的表现

distance_thresholdfloat, 默认=None

链接距离阈值,在此阈值或以上,簇将不会合并。如果 None ,则 n_clusters 必须为 None ,且 compute_full_tree 必须为 True

Added in version 0.21.

compute_distancesbool, 默认=False

即使不使用 distance_threshold ,也计算簇之间的距离。这可以用于树状图可视化,但会引入计算和内存开销。

Added in version 0.24.

有关树状图可视化的示例,请参见 绘制层次聚类树状图

Attributes:
n_clusters_int

算法找到的簇的数量。如果 distance_threshold=None ,则等于给定的 n_clusters

labels_ndarray of shape (n_samples)

每个点的簇标签。

n_leaves_int

层次树中的叶子数量。

n_connected_components_int

图中估计的连接组件数量。

Added in version 0.21: n_connected_components_ 被添加以替换 n_components_

n_features_in_int

fit 期间看到的特征数量。

Added in version 0.24.

feature_names_in_ndarray of shape ( n_features_in_ ,)

fit 期间看到的特征名称。仅当 X 的特征名称均为字符串时定义。

Added in version 1.0.

children_array-like of shape (n_samples-1, 2)

每个非叶节点的子节点。值小于 n_samples 对应于树的叶子,即原始样本。节点 i 大于或等于 n_samples 是非叶节点,其子节点为 children_[i - n_samples] 。或者在第 i 次迭代中,children[i][0] 和 children[i][1] 被合并以形成节点 n_samples + i

distances_array-like of shape (n_nodes-1,)

children_ 中相应位置的节点之间的距离。仅当使用 distance_thresholdcompute_distances 设置为 True 时计算。

See also

FeatureAgglomeration

凝聚聚类,但针对特征而非样本。

ward_tree

使用 ward 链接的层次聚类。

Examples

>>> 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(X, y=None)#

拟合从特征或距离矩阵得到的层次聚类。

Parameters:
Xarray-like, shape (n_samples, n_features) 或 (n_samples, n_samples)

要聚类的训练实例,或者如果 metric='precomputed' ,则为实例之间的距离。

y忽略

未使用,此处存在是为了通过约定保持API一致性。

Returns:
selfobject

返回已拟合的实例。

fit_predict(X, y=None)#

拟合并返回每个样本的聚类分配结果。

除了拟合之外,该方法还返回训练集中每个样本的聚类分配结果。

Parameters:
X形状为 (n_samples, n_features) 或 (n_samples, n_samples) 的类数组

要聚类的训练实例,或者如果 affinity='precomputed' ,则为实例之间的距离。

y忽略

未使用,此处存在是为了通过约定保持API一致性。

Returns:
labels形状为 (n_samples,) 的 ndarray

聚类标签。

get_metadata_routing()#

获取此对象的元数据路由。

请查看 用户指南 以了解路由机制的工作原理。

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。

Returns:
paramsdict

参数名称映射到它们的值。

set_params(**params)#

设置此估计器的参数。

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

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。