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
不是None
或n_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)#
拟合数据,然后进行转换。
将转换器拟合到
X
和y
,并带有可选参数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
配置
transform
和fit_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
每个特征簇的合并值。