特征聚合#
- 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
不是None
或n_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]#
拟合数据,然后转换它。
将变换器拟合到
X
和y
,使用可选参数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
配置
transform
和fit_transform
的输出。"default"
:变换器的默认输出格式"pandas"
:DataFrame 输出"polars"
:Polars 输出None
:变换配置保持不变
版本 1.4 中新增:
"polars"
选项已添加。
- 返回:
- self估计器实例
估计器实例。