MiniBatchKMeans#
- class sklearn.cluster.MiniBatchKMeans(n_clusters=8, *, init='k-means++', max_iter=100, batch_size=1024, verbose=0, compute_labels=True, random_state=None, tol=0.0, max_no_improvement=10, init_size=None, n_init='auto', reassignment_ratio=0.01)[source]#
Mini-Batch K-Means 聚类。
在用户指南中阅读更多内容。
- 参数:
- n_clusters整型,默认值=8
要形成的簇的数量以及要生成的质心的数量。
- init{‘k-means++’, ‘random’},可调用或形状为 (n_clusters, n_features) 的类数组,默认值=’k-means++’
初始化方法
‘k-means++’:使用基于点对总惯量贡献的经验概率分布进行采样来选择初始簇质心。这种技术加速了收敛。所实现的算法是“贪婪 k-means++”。它与普通的 k-means++ 的不同之处在于,它在每个采样步骤进行多次尝试,并从中选择最佳质心。
‘random’:从数据中随机选择
n_clusters
个观测值(行)作为初始质心。如果传入一个数组,它的形状应为 (n_clusters, n_features),并给出初始中心。
如果传入一个可调用对象,它应接受 X、n_clusters 和一个随机状态作为参数,并返回一个初始化结果。
有关初始化影响的评估,请参阅示例k-means 初始化影响的经验评估。
- max_iter整型,默认值=100
在独立于任何早期停止准则启发式方法的情况下,对完整数据集进行的最大迭代次数。
- batch_size整型,默认值=1024
迷你批次的大小。为了加快计算速度,可以将
batch_size
设置为大于 256 * 核心数,以启用所有核心的并行计算。1.0 版本中更改:
batch_size
的默认值从 100 更改为 1024。- verbose整型,默认值=0
详细模式。
- compute_labels布尔型,默认值=True
一旦迷你批次优化在 `fit` 中收敛,就计算完整数据集的标签分配和惯量。
- random_state整型,RandomState 实例或 None,默认值=None
确定质心初始化和随机重新分配的随机数生成。使用整型使随机性确定。参见词汇表。
- tol浮点型,默认值=0.0
根据平滑的、方差归一化的平均中心平方位置变化量来控制早期停止。这种早期停止启发式方法更接近于算法的批处理版本中使用的启发式方法,但与惯量启发式方法相比,会带来轻微的计算和内存开销。
要禁用基于归一化中心变化的收敛检测,请将 tol 设置为 0.0(默认值)。
- max_no_improvement整型,默认值=10
根据连续没有改善平滑惯量的迷你批次数量来控制早期停止。
要禁用基于惯量的收敛检测,请将 max_no_improvement 设置为 None。
- init_size整型,默认值=None
用于加速初始化(有时以牺牲准确性为代价)的随机采样样本数量:唯一的算法通过在数据随机子集上运行批量 KMeans 来初始化。这需要大于 n_clusters。
如果为
None
,则启发式为:如果3 * batch_size < n_clusters
,则init_size = 3 * batch_size
,否则init_size = 3 * n_clusters
。- n_init‘auto’ 或 整型,默认值=”auto”
尝试的随机初始化次数。与 KMeans 不同,该算法仅运行一次,使用
n_init
次初始化中以惯量衡量的最佳结果。对于稀疏高维问题,建议进行多次运行(参见使用 k-means 对稀疏数据进行聚类)。当
n_init='auto'
时,运行次数取决于 init 的值:如果使用init='random'
或init
是可调用对象,则为 3;如果使用init='k-means++'
或init
是类数组,则为 1。1.2 版本新增: 为
n_init
添加了 'auto' 选项。1.4 版本中更改:
n_init
的默认值更改为'auto'
。- reassignment_ratio浮点型,默认值=0.01
控制中心重新分配的最大计数的分数。值越高意味着低计数中心更容易被重新分配,这意味着模型收敛时间会更长,但应该会得到更好的聚类结果。然而,过高的值可能会导致收敛问题,尤其是在批次大小较小的情况下。
- 属性:
- cluster_centers_形状为 (n_clusters, n_features) 的 ndarray
簇中心的坐标。
- labels_形状为 (n_samples,) 的 ndarray
每个点的标签(如果 compute_labels 设置为 True)。
- inertia_浮点型
如果 compute_labels 设置为 True,则与所选分区相关的惯量准则值。如果 compute_labels 设置为 False,则它是基于批次惯量指数加权平均值的惯量近似值。惯量定义为样本到其簇中心的平方距离之和,如果提供了样本权重,则按样本权重加权。
- n_iter_整型
对完整数据集的迭代次数。
- n_steps_整型
已处理的迷你批次数量。
1.0 版本新增。
- n_features_in_整型
在拟合期间看到的特征数量。
0.24 版本新增。
- feature_names_in_形状为 (
n_features_in_
,) 的 ndarray 在拟合期间看到的特征名称。仅当
X
的特征名称都是字符串时才定义。1.0 版本新增。
另请参见
KMeans
基于 Lloyd 算法的聚类方法的经典实现。它在每次迭代中消耗整个输入数据。
备注
参见 https://www.eecs.tufts.edu/~dsculley/papers/fastkmeans.pdf
当数据集中的点太少时,某些中心可能会重复,这意味着请求的簇数量和返回的簇数量在聚类方面不会总是匹配。一种解决方案是将
reassignment_ratio=0
,这可以防止重新分配过小的簇。有关 Mini-Batch K-Means 聚类与
BIRCH
的比较,请参阅比较 BIRCH 和 MiniBatchKMeans。示例
>>> from sklearn.cluster import MiniBatchKMeans >>> import numpy as np >>> X = np.array([[1, 2], [1, 4], [1, 0], ... [4, 2], [4, 0], [4, 4], ... [4, 5], [0, 1], [2, 2], ... [3, 2], [5, 5], [1, -1]]) >>> # manually fit on batches >>> kmeans = MiniBatchKMeans(n_clusters=2, ... random_state=0, ... batch_size=6, ... n_init="auto") >>> kmeans = kmeans.partial_fit(X[0:6,:]) >>> kmeans = kmeans.partial_fit(X[6:12,:]) >>> kmeans.cluster_centers_ array([[3.375, 3. ], [0.75 , 0.5 ]]) >>> kmeans.predict([[0, 0], [4, 4]]) array([1, 0], dtype=int32) >>> # fit on the whole data >>> kmeans = MiniBatchKMeans(n_clusters=2, ... random_state=0, ... batch_size=6, ... max_iter=10, ... n_init="auto").fit(X) >>> kmeans.cluster_centers_ array([[3.55102041, 2.48979592], [1.06896552, 1. ]]) >>> kmeans.predict([[0, 0], [4, 4]]) array([1, 0], dtype=int32)
有关 Mini-Batch K-Means 聚类与其他聚类算法的比较,请参阅在玩具数据集上比较不同的聚类算法
- fit(X, y=None, sample_weight=None)[source]#
通过将 X 分块为迷你批次来计算 X 上的质心。
- 参数:
- X形状为 (n_samples, n_features) 的 {类数组, 稀疏矩阵}
要聚类的训练实例。需要注意的是,数据将被转换为 C 顺序,如果给定数据不是 C 连续的,这将导致内存复制。如果传入稀疏矩阵,如果它不是 CSR 格式,则会进行复制。
- y已忽略
未被使用,此处根据 API 约定保留。
- sample_weight形状为 (n_samples,) 的类数组,默认值=None
X 中每个观测值的权重。如果为 None,则所有观测值都被赋予相同的权重。如果
init
是一个可调用对象或用户提供的数组,则在初始化期间不使用sample_weight
。0.20 版本新增。
- 返回:
- self对象
已拟合的估计器。
- fit_predict(X, y=None, sample_weight=None)[source]#
计算簇中心并预测每个样本的簇索引。
便捷方法;等同于调用 fit(X) 后再调用 predict(X)。
- 参数:
- X形状为 (n_samples, n_features) 的 {类数组, 稀疏矩阵}
待转换的新数据。
- y已忽略
未被使用,此处根据 API 约定保留。
- sample_weight形状为 (n_samples,) 的类数组,默认值=None
X 中每个观测值的权重。如果为 None,则所有观测值都被赋予相同的权重。
- 返回:
- labels形状为 (n_samples,) 的 ndarray
每个样本所属簇的索引。
- fit_transform(X, y=None, sample_weight=None)[source]#
计算聚类并将 X 转换为簇距离空间。
等同于 fit(X).transform(X),但实现更高效。
- 参数:
- X形状为 (n_samples, n_features) 的 {类数组, 稀疏矩阵}
待转换的新数据。
- y已忽略
未被使用,此处根据 API 约定保留。
- sample_weight形状为 (n_samples,) 的类数组,默认值=None
X 中每个观测值的权重。如果为 None,则所有观测值都被赋予相同的权重。
- 返回:
- X_new形状为 (n_samples, n_clusters) 的 ndarray
转换到新空间中的 X。
- 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]#
获取此估计器的参数。
- 参数:
- deep布尔型,默认值=True
如果为 True,将返回此估计器及其包含的子对象(如果它们是估计器)的参数。
- 返回:
- params字典
参数名称映射到其值。
- partial_fit(X, y=None, sample_weight=None)[source]#
在单个迷你批次 X 上更新 k-means 估计。
- 参数:
- X形状为 (n_samples, n_features) 的 {类数组, 稀疏矩阵}
要聚类的训练实例。需要注意的是,数据将被转换为 C 顺序,如果给定数据不是 C 连续的,这将导致内存复制。如果传入稀疏矩阵,如果它不是 CSR 格式,则会进行复制。
- y已忽略
未被使用,此处根据 API 约定保留。
- sample_weight形状为 (n_samples,) 的类数组,默认值=None
X 中每个观测值的权重。如果为 None,则所有观测值都被赋予相同的权重。如果
init
是一个可调用对象或用户提供的数组,则在初始化期间不使用sample_weight
。
- 返回:
- self对象
返回更新后的估计器。
- predict(X)[source]#
预测 X 中每个样本所属的最接近的簇。
在向量量化文献中,
cluster_centers_
被称为码本,predict
返回的每个值都是码本中最接近码的索引。- 参数:
- X形状为 (n_samples, n_features) 的 {类数组, 稀疏矩阵}
待预测的新数据。
- 返回:
- labels形状为 (n_samples,) 的 ndarray
每个样本所属簇的索引。
- score(X, y=None, sample_weight=None)[source]#
X 在 K-means 目标上的值的反向。
- 参数:
- X形状为 (n_samples, n_features) 的 {类数组, 稀疏矩阵}
新数据。
- y已忽略
未被使用,此处根据 API 约定保留。
- sample_weight形状为 (n_samples,) 的类数组,默认值=None
X 中每个观测值的权重。如果为 None,则所有观测值都被赋予相同的权重。
- 返回:
- score浮点型
X 在 K-means 目标上的值的反向。
- set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') MiniBatchKMeans [source]#
请求传递给
fit
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时才相关(参见sklearn.set_config
)。请参见用户指南了解路由机制的工作原理。每个参数的选项是
True
:请求元数据,如果提供则传递给fit
。如果未提供元数据,则请求被忽略。False
:不请求元数据,元估计器不会将其传递给fit
。None
:不请求元数据,如果用户提供,元估计器将引发错误。str
:元数据应以给定的别名而不是原始名称传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。1.3 版本新增。
注意
此方法仅当此估计器作为元估计器(例如,在
Pipeline
内部使用)的子估计器时才相关。否则,它没有效果。- 参数:
- sample_weightstr、True、False 或 None,默认值=sklearn.utils.metadata_routing.UNCHANGED
fit
方法中sample_weight
参数的元数据路由。
- 返回:
- self对象
更新后的对象。
- set_output(*, transform=None)[source]#
设置输出容器。
有关如何使用 API 的示例,请参阅Introducing the set_output API。
- 参数:
- transform{“default”, “pandas”, “polars”},默认值=None
配置
transform
和fit_transform
的输出。"default"
:转换器的默认输出格式"pandas"
:DataFrame 输出"polars"
:Polars 输出None
:转换配置不变
1.4 版本新增: 添加了
"polars"
选项。
- 返回:
- self估计器实例
估计器实例。
- set_params(**params)[source]#
设置此估计器的参数。
该方法适用于简单估计器以及嵌套对象(如
Pipeline
)。后者具有<component>__<parameter>
形式的参数,以便可以更新嵌套对象的每个组件。- 参数:
- **params字典
估计器参数。
- 返回:
- self估计器实例
估计器实例。
- set_partial_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') MiniBatchKMeans [source]#
请求传递给
partial_fit
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时才相关(参见sklearn.set_config
)。请参见用户指南了解路由机制的工作原理。每个参数的选项是
True
:请求元数据,如果提供则传递给partial_fit
。如果未提供元数据,则请求被忽略。False
:不请求元数据,元估计器不会将其传递给partial_fit
。None
:不请求元数据,如果用户提供,元估计器将引发错误。str
:元数据应以给定的别名而不是原始名称传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。1.3 版本新增。
注意
此方法仅当此估计器作为元估计器(例如,在
Pipeline
内部使用)的子估计器时才相关。否则,它没有效果。- 参数:
- sample_weightstr、True、False 或 None,默认值=sklearn.utils.metadata_routing.UNCHANGED
partial_fit
方法中sample_weight
参数的元数据路由。
- 返回:
- self对象
更新后的对象。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') MiniBatchKMeans [source]#
请求传递给
score
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时才相关(参见sklearn.set_config
)。请参见用户指南了解路由机制的工作原理。每个参数的选项是
True
:请求元数据,如果提供则传递给score
。如果未提供元数据,则请求被忽略。False
:不请求元数据,元估计器不会将其传递给score
。None
:不请求元数据,如果用户提供,元估计器将引发错误。str
:元数据应以给定的别名而不是原始名称传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。1.3 版本新增。
注意
此方法仅当此估计器作为元估计器(例如,在
Pipeline
内部使用)的子估计器时才相关。否则,它没有效果。- 参数:
- sample_weightstr、True、False 或 None,默认值=sklearn.utils.metadata_routing.UNCHANGED
score
方法中sample_weight
参数的元数据路由。
- 返回:
- self对象
更新后的对象。