FeatureAgglomeration#

class sklearn.cluster.FeatureAgglomeration(n_clusters=2, *, metric='euclidean', memory=None, connectivity=None, compute_full_tree='auto', linkage='ward', pooling_func=<function mean>, distance_threshold=None, compute_distances=False)#

聚合特征。

递归地合并特征对簇。

更多信息请参阅 用户指南

Parameters:
n_clustersint or None, default=2

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

metricstr or callable, default=”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 or object with the joblib.Memory interface, default=None

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

connectivityarray-like, sparse matrix, 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 不是 Nonen_clusters 小于 100 或 0.02 * n_samples 中的最大值时,等同于 True 。否则,”auto” 等同于 False

linkage{“ward”, “complete”, “average”, “single”}, default=”ward”

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

  • “ward” 最小化被合并簇的方差。

  • “complete” 或最大链接使用两个集合中所有特征之间的最大距离。

  • “average” 使用两个集合中每个特征之间的平均距离。

  • “single” 使用两个集合中所有特征之间的最小距离。

pooling_funccallable, default=np.mean

这将聚合特征的值组合成一个单一值,应接受形状为 [M, N] 的数组和关键字参数 axis=1 ,并将其缩减为大小为 [M] 的数组。

distance_thresholdfloat, default=None

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

Added in version 0.21.

compute_distancesbool, default=False

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

Added in version 0.24.

Attributes:
n_clusters_int

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

labels_array-like of (n_features,)

每个特征的簇标签。

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_nodes-1, 2)

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

distances_array-like of shape (n_nodes-1,)

children_ 中相应位置的节点之间的距离。仅在 distance_threshold 被使用或 compute_distances 设置为 True 时计算。

See also

AgglomerativeClustering

聚合样本而不是特征。

ward_tree

使用 ward 链接的层次聚类。

Examples

>>> import numpy as np
>>> from sklearn import datasets, cluster
>>> digits = datasets.load_digits()
>>> images = digits.images
>>> X = np.reshape(images, (len(images), -1))
>>> agglo = cluster.FeatureAgglomeration(n_clusters=32)
>>> agglo.fit(X)
FeatureAgglomeration(n_clusters=32)
>>> X_reduced = agglo.transform(X)
>>> X_reduced.shape
(1797, 32)
fit(X, y=None)#

拟合层次聚类在数据上。

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

数据。

y忽略

未使用,为了API一致性而存在。

Returns:
self对象

返回转换器。

property fit_predict#

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

fit_transform(X, y=None, **fit_params)#

拟合数据,然后进行转换。

将转换器拟合到 Xy ,并带有可选参数 fit_params , 并返回 X 的转换版本。

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

输入样本。

y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组, 默认=None

目标值(无监督转换为 None)。

**fit_paramsdict

其他拟合参数。

Returns:
X_new形状为 (n_samples, n_features_new) 的 ndarray 数组

转换后的数组。

get_feature_names_out(input_features=None)#

获取转换后的输出特征名称。

输出特征名称将以小写的类名作为前缀。例如,如果转换器输出3个特征,那么输出特征名称将是: ["class_name0", "class_name1", "class_name2"]

Parameters:
input_features类似数组的对象或None,默认为None

仅用于验证特征名称与 fit 中看到的名称。

Returns:
feature_names_outndarray of str对象

转换后的特征名称。

get_metadata_routing()#

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

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

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

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

Returns:
paramsdict

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

inverse_transform(X=None, *, Xt=None)#

反转变换并返回一个大小为 n_features 的向量。

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

要分配给每个样本簇的值。

Xt形状为 (n_samples, n_clusters) 或 (n_clusters,) 的类数组

要分配给每个样本簇的值。

Deprecated since version 1.5: Xt 在 1.5 版本中已弃用,并将在 1.7 版本中移除。请改用 X

Returns:
X形状为 (n_samples, n_features) 或 (n_features,) 的 ndarray

一个大小为 n_samples 的向量,其中包含分配给每个样本簇的 Xred 值。

set_output(*, transform=None)#

设置输出容器。

请参阅 介绍 set_output API 以了解如何使用API的示例。

Parameters:
transform{“default”, “pandas”, “polars”}, 默认=None

配置 transformfit_transform 的输出。

  • "default" : 转换器的默认输出格式

  • "pandas" : DataFrame 输出

  • "polars" : Polars 输出

  • None : 转换配置不变

Added in version 1.4: "polars" 选项已添加。

Returns:
self估计器实例

估计器实例。

set_params(**params)#

设置此估计器的参数。

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

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。

transform(X)#

使用已建立的聚类转换新矩阵。

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

一个 M 行 N 列的数组,表示 M 个观测值在 N 维空间中,或一个长度为 M 的 M 个一维观测值数组。

Returns:
Y形状为 (n_samples, n_clusters) 或 (n_clusters,) 的 ndarray

每个特征簇的合并值。