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)[源]#
特征凝聚。
递归地合并成对的特征簇。
有关
FeatureAgglomeration
策略与单变量特征选择策略(基于 ANOVA)的示例比较,请参阅 特征凝聚与单变量选择。在用户指南中阅读更多信息。
- 参数:
- n_clustersint 或 None,默认值=2
要找到的簇的数量。如果
distance_threshold
不为None
,则必须为None
。- metricstr 或 callable,默认值=”euclidean”
用于计算链接的度量。可以是 “euclidean”、“l1”、“l2”、“manhattan”、“cosine” 或 “precomputed”。如果链接是 “ward”,则只接受 “euclidean”。如果为 “precomputed”,则 fit 方法需要距离矩阵作为输入。
1.2 版本新增。
- memorystr 或具有 joblib.Memory 接口的对象,默认值=None
用于缓存树计算的输出。默认情况下,不进行缓存。如果给出字符串,它将是缓存目录的路径。
- connectivity类数组、稀疏矩阵或 callable,默认值=None
连通性矩阵。根据给定数据结构定义每个特征的相邻特征。这本身可以是一个连通性矩阵,也可以是一个将数据转换为连通性矩阵的 callable,例如从
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_funccallable,默认值=np.mean
此函数将聚合特征的值合并为单个值,应接受形状为 [M, N] 的数组和关键字参数
axis=1
,并将其减少为大小为 [M] 的数组。- distance_thresholdfloat,默认值=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_ndarray,形状为 (
n_features_in_
,) 在 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)[源]#
在数据上拟合层次聚类。
- 参数:
- X类数组,形状为 (n_samples, n_features)
数据。
- y忽略
未使用,此处仅为 API 一致性。
- 返回:
- self对象
返回转换器。
- property fit_predict#
拟合并返回每个样本的聚类分配结果。
- fit_transform(X, y=None, **fit_params)[源]#
拟合数据,然后进行转换。
使用可选参数
fit_params
将转换器拟合到X
和y
,并返回X
的转换版本。- 参数:
- X类数组,形状为 (n_samples, n_features)
输入样本。
- y类数组,形状为 (n_samples,) 或 (n_samples, n_outputs),默认值=None
目标值(无监督转换的为 None)。
- **fit_paramsdict
额外的拟合参数。
- 返回:
- X_newndarray 数组,形状为 (n_samples, n_features_new)
转换后的数组。
- get_feature_names_out(input_features=None)[源]#
获取转换的输出特征名称。
输出特征名称将以小写类名作为前缀。例如,如果转换器输出 3 个特征,则输出特征名称为:
["class_name0", "class_name1", "class_name2"]
。- 参数:
- input_features类数组的字符串或 None,默认值=None
仅用于验证与
fit
中看到的名称一致的特征名称。
- 返回:
- feature_names_out字符串对象的 ndarray
转换后的特征名称。
- get_metadata_routing()[源]#
获取此对象的元数据路由。
请查看用户指南,了解路由机制的工作原理。
- 返回:
- routingMetadataRequest
一个封装路由信息的
MetadataRequest
。
- get_params(deep=True)[源]#
获取此估计器的参数。
- 参数:
- deepbool,默认值=True
如果为 True,将返回此估计器及其包含的子对象(如果它们是估计器)的参数。
- 返回:
- paramsdict
参数名称及其对应的值的映射。
- inverse_transform(X)[源]#
逆转换并返回大小为
n_features
的向量。- 参数:
- X类数组,形状为 (n_samples, n_clusters) 或 (n_clusters,)
要分配给每个样本簇的值。
- 返回:
- X_originalndarray,形状为 (n_samples, n_features) 或 (n_features,)
一个大小为
n_samples
的向量,其中X
的值已分配给每个样本簇。
- set_output(*, transform=None)[源]#
设置输出容器。
有关如何使用 API 的示例,请参阅 set_output API 介绍。
- 参数:
- transform{“default”, “pandas”, “polars”},默认值=None
配置
transform
和fit_transform
的输出。"default"
:转换器的默认输出格式"pandas"
:DataFrame 输出"polars"
:Polars 输出None
:转换配置不变
1.4 版本新增: 增加了
"polars"
选项。
- 返回:
- self估计器实例
估计器实例。