特征聚合#

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)[source]#

特征聚合。

递归地合并成对的特征簇。

参考 特征聚合与单变量选择 查看FeatureAgglomeration策略与基于ANOVA的单变量特征选择策略的示例比较。

用户指南 中了解更多信息。

参数:
n_clustersint 或 None,默认为2

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

metricstr 或 callable,默认为”euclidean“

用于计算连接的度量。可以是“euclidean”(欧几里得距离)、“l1”(曼哈顿距离)、“l2”(欧几里得距离的平方)、“manhattan”(曼哈顿距离)、“cosine”(余弦相似度)或“precomputed”(预计算)。如果linkage是“ward”,则只接受“euclidean”。如果为“precomputed”,则拟合方法需要距离矩阵作为输入。

1.2 版本新增。

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

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

connectivity类数组、稀疏矩阵或可调用对象,默认为 None

连接矩阵。为每个特征定义其相邻特征,遵循数据的给定结构。这可以是连接矩阵本身,也可以是将数据转换为连接矩阵的可调用对象,例如由kneighbors_graph派生而来。默认为None,即层次聚类算法是无结构的。

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”最小化被合并的聚类的方差。

  • “complete”或最大连接使用两组所有特征之间的最大距离。

  • “average”使用两组每个特征距离的平均值。

  • “single”使用两组所有特征之间距离的最小值。

pooling_func可调用对象,默认为 np.mean

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

distance_threshold浮点数,默认为 None

聚类将不会合并的连接距离阈值。如果非None,则n_clusters必须为None,并且compute_full_tree必须为True

0.21 版本新增。

compute_distancesbool,默认为 False

即使不使用distance_threshold,也会计算聚类之间的距离。这可以用于制作树状图可视化,但会带来计算和内存开销。

0.24 版本新增。

属性:
n_clusters_int

算法找到的聚类数量。如果distance_threshold=None,它将等于给定的n_clusters

labels_形状为 (n_features,) 的类数组

每个特征的聚类标签。

n_leaves_int

层次树中的叶子数。

n_connected_components_int

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

0.21 版本新增: n_connected_components_ 已添加以替换 n_components_

n_features_in_int

fit期间看到的特征数量。

0.24 版本新增。

feature_names_in_形状为 (n_features_in_,) 的 ndarray

fit期间看到的特征名称。仅当X具有全部为字符串的特征名称时才定义。

1.0 版本新增。

children_形状为 (n_nodes-1, 2) 的类数组

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

distances_形状为 (n_nodes-1,) 的类数组

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

另请参见

AgglomerativeClustering

凝聚聚类样本而不是特征。

ward_tree

使用 ward 连接的层次聚类。

示例

>>> 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)[source]#

在数据上拟合层次聚类。

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

数据。

y忽略

未使用,此处出于 API 一致性约定而存在。

返回:
self对象

返回转换器。

property fit_predict#

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

fit_transform(X, y=None, **fit_params)[source]#

拟合数据,然后转换它。

将变换器拟合到 Xy,使用可选参数 fit_params,并返回 X 的变换版本。

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

输入样本。

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

目标值(对于无监督变换则为 None)。

**fit_paramsdict

附加拟合参数。

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

变换后的数组。

get_feature_names_out(input_features=None)[source]#

获取变换后的特征名称。

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

参数:
input_features字符串类数组或 None,默认为 None

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

返回:
feature_names_out字符串对象的 ndarray

变换后的特征名称。

get_metadata_routing()[source]#

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

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

返回:
routingMetadataRequest

一个 MetadataRequest 封装路由信息。

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deepbool,默认为 True

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

返回:
paramsdict

参数名称与其值的映射。

inverse_transform(X=None, *, Xt=None)[source]#

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

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

要分配给每个样本集群的值。

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

要分配给每个样本集群的值。

自版本 1.5 起已弃用: Xt 在 1.5 中已弃用,并将从 1.7 中移除。请改用 X

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

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

set_output(*, transform=None)[source]#

设置输出容器。

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

参数:
transform{"default", "pandas", "polars"},默认为 None

配置 transformfit_transform 的输出。

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

  • "pandas":DataFrame 输出

  • "polars":Polars 输出

  • None:变换配置保持不变

版本 1.4 中新增: "polars" 选项已添加。

返回:
self估计器实例

估计器实例。

set_params(**params)[source]#

设置此估计器的参数。

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

参数:
**paramsdict

估计器参数。

返回:
self估计器实例

估计器实例。

transform(X)[source]#

使用构建的聚类变换新矩阵。

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

M x N 数组,其中包含 N 维的 M 个观测值,或长度为 M 的数组,其中包含 M 个一维观测值。

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

每个特征簇的合并值。