BisectingKMeans#
- class sklearn.cluster.BisectingKMeans(n_clusters=8, *, init='random', n_init=1, random_state=None, max_iter=300, verbose=0, tol=0.0001, copy_x=True, algorithm='lloyd', bisecting_strategy='biggest_inertia')#
二分 K-Means 聚类。
更多信息请参阅 用户指南 。
Added in version 1.1.
- Parameters:
- n_clustersint, default=8
要形成的簇的数量以及要生成的质心的数量。
- init{‘k-means++’, ‘random’} or callable, default=’random’
初始化方法:
‘k-means++’ : 以一种智能的方式选择初始聚类中心,以加速收敛。详见 k_init 中的 Notes 部分。
‘random’: 从数据中随机选择
n_clusters
个观测值(行)作为初始质心。如果传递了一个可调用对象,它应该接受参数 X、n_clusters 和一个随机状态,并返回一个初始化。
- n_initint, default=1
在每次二分中,内部 k-means 算法将以不同的质心种子运行多次。 这将导致在每次二分中以惯性为标准,产生 n_init 次连续运行的最佳输出。
- random_stateint, RandomState instance or None, default=None
用于内部 K-Means 质心初始化的随机数生成。使用一个整数使随机性确定。 详见 Glossary 。
- max_iterint, default=300
每次二分中内部 k-means 算法的最大迭代次数。
- verboseint, default=0
详细模式。
- tolfloat, default=1e-4
相对于两次连续迭代中聚类中心差异的 Frobenius 范数的相对容差,以声明收敛。 在每次二分中用于内部 k-means 算法,以选择最佳可能的簇。
- copy_xbool, default=True
在预计算距离时,首先对数据进行中心化会更数值准确。如果 copy_x 为 True(默认),则不会修改原始数据。 如果为 False,则会修改原始数据,并在函数返回前恢复,但可能会因减去和再加回数据均值而引入小的数值差异。 注意,如果原始数据不是 C-contiguous 的,即使 copy_x 为 False,也会进行复制。 如果原始数据是稀疏的,但不是 CSR 格式,即使 copy_x 为 False,也会进行复制。
- algorithm{“lloyd”, “elkan”}, default=”lloyd”
在二分中使用的内部 K-Means 算法。 经典的 EM 风格算法是
"lloyd"
。"elkan"
变体在某些具有良好定义簇的数据集上可能更高效,通过使用三角不等式。 然而,由于分配了一个额外的形状为(n_samples, n_clusters)
的数组,它更占用内存。- bisecting_strategy{“biggest_inertia”, “largest_cluster”}, default=”biggest_inertia”
定义应如何进行二分:
- “biggest_inertia” 意味着 BisectingKMeans 将始终检查所有计算的簇,以找到具有最大 SSE(误差平方和)的簇并对其进行二分。
这种方法注重精度,但可能会在执行时间上代价较高(尤其是对于较大的数据点数量)。
- “largest_cluster” - BisectingKMeans 将始终从所有先前计算的簇中拆分具有最多点分配给它的簇。
这应该比按 SSE(’biggest_inertia’)选择更快,并且在大多数情况下可能会产生相似的结果。
- Attributes:
- cluster_centers_ndarray of shape (n_clusters, n_features)
簇中心的坐标。如果算法在完全收敛之前停止(见
tol
和max_iter
),这些将与labels_
不一致。- labels_ndarray of shape (n_samples,)
每个点的标签。
- inertia_float
样本到其最近簇中心的平方距离之和,如果提供了样本权重,则按样本权重加权。
- n_features_in_int
在 fit 过程中看到的特征数量。
- feature_names_in_ndarray of shape (
n_features_in_
,) 在 fit 过程中看到的特征名称。仅当
X
的所有特征名称为字符串时定义。
See also
KMeans
K-Means 算法的原始实现。
Notes
当 n_cluster 小于 3 时,由于对该情况的冗余计算,可能会效率低下。
Examples
>>> from sklearn.cluster import BisectingKMeans >>> import numpy as np >>> X = np.array([[1, 1], [10, 1], [3, 1], ... [10, 0], [2, 1], [10, 2], ... [10, 8], [10, 9], [10, 10]]) >>> bisect_means = BisectingKMeans(n_clusters=3, random_state=0).fit(X) >>> bisect_means.labels_ array([0, 2, 0, 2, 0, 2, 1, 1, 1], dtype=int32) >>> bisect_means.predict([[0, 0], [12, 3]]) array([0, 2], dtype=int32) >>> bisect_means.cluster_centers_ array([[ 2., 1.], [10., 9.], [10., 1.]])
- fit(X, y=None, sample_weight=None)#
计算二分k均值聚类。
- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples, n_features)
要聚类的训练实例。
Note
数据将被转换为C排序, 如果给定的数据不是C连续的,这将导致内存拷贝。
- y忽略
未使用,此处存在是为了API一致性约定。
- sample_weight形状为 (n_samples,) 的array-like,默认=None
每个观测值在X中的权重。如果为None,所有观测值都被赋予相同的权重。如果
init
是一个可调用对象,则在初始化期间不使用sample_weight
。
- Returns:
- self
拟合的估计器。
- fit_predict(X, y=None, sample_weight=None)#
计算聚类中心并为每个样本预测聚类索引。
便捷方法;等效于调用 fit(X) 后再调用 predict(X)。
- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples, n_features)
要转换的新数据。
- y忽略
未使用,此处仅为了保持 API 一致性而存在。
- sample_weight形状为 (n_samples,) 的 array-like,默认=None
X 中每个观测值的权重。如果为 None,则所有观测值被赋予相同的权重。
- Returns:
- labels形状为 (n_samples,) 的 ndarray
每个样本所属的聚类索引。
- fit_transform(X, y=None, sample_weight=None)#
计算聚类并将X转换为聚类距离空间。
等效于fit(X).transform(X),但实现更高效。
- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples, n_features)
要转换的新数据。
- y忽略
未使用,此处仅为了API一致性而存在。
- sample_weight形状为 (n_samples,) 的array-like,默认=None
X中每个观测值的权重。如果为None,则所有观测值分配相同的权重。
- Returns:
- X_new形状为 (n_samples, n_clusters) 的ndarray
在新空间中转换的X。
- 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
参数名称映射到它们的值。
- predict(X)#
预测X中的每个样本属于哪个簇。
预测是通过在层次树中向下搜索最接近的叶簇来进行的。
在向量量化文献中,
cluster_centers_
被称为代码簿,predict
返回的每个值是代码簿中最接近代码的索引。- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples, n_features)
要预测的新数据。
- Returns:
- labelsndarray,形状为 (n_samples,)
每个样本所属的簇的索引。
- score(X, y=None, sample_weight=None)#
X在K-means目标函数上的值的相反数。
- X{array-like, sparse matrix} of shape (n_samples, n_features)
新数据。
- y忽略
不使用,出现在这里是为了API一致性。
- sample_weightarray-like of shape (n_samples,), default=None
X中每个观测值的权重。如果为None,则所有观测值被赋予相同的权重。
- scorefloat
X在K-means目标函数上的值的相反数。
- set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') BisectingKMeans #
Request metadata passed to the
fit
method.Note that this method is only relevant if
enable_metadata_routing=True
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed tofit
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it tofit
.None
: metadata is not requested, and the meta-estimator will raise an error if the user provides it.str
: metadata should be passed to the meta-estimator with this given alias instead of the original name.
The default (
sklearn.utils.metadata_routing.UNCHANGED
) retains the existing request. This allows you to change the request for some parameters and not others.Added in version 1.3.
Note
This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a
Pipeline
. Otherwise it has no effect.- Parameters:
- sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
sample_weight
parameter infit
.
- Returns:
- selfobject
The updated object.
- 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
估计器实例。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') BisectingKMeans #
Request metadata passed to the
score
method.Note that this method is only relevant if
enable_metadata_routing=True
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed toscore
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it toscore
.None
: metadata is not requested, and the meta-estimator will raise an error if the user provides it.str
: metadata should be passed to the meta-estimator with this given alias instead of the original name.
The default (
sklearn.utils.metadata_routing.UNCHANGED
) retains the existing request. This allows you to change the request for some parameters and not others.Added in version 1.3.
Note
This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a
Pipeline
. Otherwise it has no effect.- Parameters:
- sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
sample_weight
parameter inscore
.
- Returns:
- selfobject
The updated object.
- transform(X)#
将X转换为聚类距离空间。
在新空间中,每个维度是到聚类中心的距离。请注意,即使X是稀疏的,
transform
返回的数组通常也是稠密的。- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples, n_features)
要转换的新数据。
- Returns:
- X_newndarray,形状为 (n_samples, n_clusters)
X在新空间中转换后的结果。