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)[源代码]#

小批量K均值集群。

阅读更多的 User Guide .

参数:
n_clustersint, default=8

要形成的集群数量以及要生成的重心数量。

init' k-means ++',可调用或类似数组的形状 (n_clusters,n_features),默认=' k-means ++'

初始化方法:

“k-means++”:使用基于点对总体惯性贡献的经验概率分布的抽样来选择初始集群重心。该技术加快了收敛速度。实现的算法是“贪婪k-means++”。它与vanilla k-means++的不同之处在于,在每个采样步骤中进行多次尝试,并选择其中最佳的重心。

'random':选择 n_clusters 根据初始重心的数据随机观察(行)。

如果传递一个数组,它的形状应该是(n_clusters,n_features)并给出初始中心。

如果传递了可调用内容,它应该采用参数X、n_clusters和随机状态并返回初始化。

有关初始化影响的评估,请参阅示例 k均值初始化影响的实证评估 .

max_iterint,默认=100

独立于任何早期停止标准启发式而停止之前在完整数据集上进行的最大迭代次数。

batch_sizeint,默认值=1024

迷你批次的大小。为了更快地计算,您可以设置 batch_size 超过256 * 个核数,以实现所有核的并行性。

在 1.0 版本发生变更: batch_size 默认值从100更改为1024。

verboseint,默认=0

冗长模式。

compute_labels布尔,默认=True

一旦小批优化收敛到适合度,计算完整数据集的标签分配和惯性。

random_stateint,RandomState实例或无,默认=无

确定重心初始化和随机重新分配的随机数生成。使用int使随机性具有确定性。看到 Glossary .

tolfloat,默认=0.0

根据通过平均中心平方位置变化的平滑、方差标准化测量的相对中心变化来控制提前停止。这种早期停止启发式更接近于用于算法的批量变体的启发式,但会比惯性启发式引起轻微的计算和内存负担。

要禁用基于规范化中心变化的收敛检测,请将tol设置为0.0(默认)。

max_no_improvementint,默认值=10

根据小型批次的连续数量控制提前停止,但不会改善平滑惯性。

要禁用基于惯性的收敛检测,请将max_no_improvement设置为无。

init_sizeint,默认=无

为了加速初始化而随机采样的样本数量(有时以牺牲准确性为代价):唯一的算法是通过对数据的随机子集运行批处理KMeans来初始化的。这需要大于n_clusters。

如果 None ,启发式是 init_size = 3 * batch_size 如果 3 * batch_size < n_clusters ,其他 init_size = 3 * n_clusters .

n_init“Auto”或int,默认=“Auto”

尝试的随机初始化数。与KMeans相比,该算法只运行一次,使用 n_init 通过惯性测量的初始化。对于稀疏的多维问题,建议运行几次(请参阅 使用k均值对稀疏数据进行聚集 ).

n_init='auto' ,则运行次数取决于init:3的值(如果使用 init='random'init 是可调用的; 1如果使用 init='k-means++'init 是一个类似阵列的。

Added in version 1.2: 添加了“自动”选项 n_init .

在 1.4 版本发生变更: 默认值 n_init 改为 'auto' 在版本中。

reassignment_ratio浮动,默认=0.01

控制要重新分配的中心的最大计数数的比例。值越高意味着低计数中心更容易重新分配,这意味着模型将需要更长的时间来收敛,但应该在更好的集群中收敛。然而,太高的值可能会导致收敛问题,尤其是在批量大小较小的情况下。

属性:
cluster_centers_形状的nd数组(n_classes,n_features)

集群中心的坐标。

labels_形状的nd数组(n_samples,)

每个点的标签(如果compute_labels设置为True)。

inertia_浮子

如果compute_labels设置为True,则与所选分区关联的惯性准则的值。如果compute_labels设置为False,则它是基于批惯性的指数加权平均值的惯性的近似值。惯性被定义为样本到其集群中心的平方距离之和,通过样本权重(如果提供)进行加权。

n_iter_int

完整数据集的迭代次数。

n_steps_int

处理的小批数量。

Added in version 1.0.

n_features_in_int

期间看到的功能数量 fit .

Added in version 0.24.

feature_names_in_ :nd形状数组 (n_features_in_ ,)nd数组形状(

Names of features seen during fit. Defined only when X has feature names that are all strings.

Added in version 1.0.

参见

KMeans

基于劳埃德算法的集群方法的经典实现。它在每次迭代时消耗整套输入数据。

注意到

请参阅https://www.eecs.tufts.edu/~dsculley/papers/fastkmeans.pdf

当数据集中的点太少时,一些中心可能会重复,这意味着就请求集群的数量和返回集群的数量而言进行适当的集群并不总是匹配。解决方案之一是设置 reassignment_ratio=0 ,这可以防止重新确定太小的集群。

看到 比较BIRCH和MiniBatchKMeans 以比较 BIRCH .

示例

>>> 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)
fit(X, y=None, sample_weight=None)[源代码]#

通过将X分块成小批量来计算X上的重心。

参数:
X形状(n_samples,n_features)的{类数组,稀疏矩阵}

要集群的训练实例。必须注意的是,数据将被转换为C排序,如果给定数据不是C连续的,这将导致内存复制。如果传递了稀疏矩阵,如果它不是CSR格式,则将创建副本。

y忽视

未使用,此处列出是为了按照惯例实现API一致性。

sample_weight形状类似数组(n_samples,),默认=无

X中每个观察的权重。如果无,则所有观察结果均被赋予相同的权重。 sample_weight 在初始化期间不使用,如果 init 是可调用或用户提供的数组。

Added in version 0.20.

返回:
self对象

拟合估计量。

fit_predict(X, y=None, sample_weight=None)[源代码]#

计算每个样本的集群中心并预测集群指数。

便利法;相当于先调用fit(X),然后调用predict(X)。

参数:
X形状(n_samples,n_features)的{类数组,稀疏矩阵}

需要转换的新数据。

y忽视

未使用,此处列出是为了按照惯例实现API一致性。

sample_weight形状类似数组(n_samples,),默认=无

X中每个观察的权重。如果无,则所有观察结果均被赋予相同的权重。

返回:
labels形状的nd数组(n_samples,)

每个样本所属的集群的索引。

fit_transform(X, y=None, sample_weight=None)[源代码]#

计算集群并将X转换到集群距离空间。

相当于fit(X).transform(X),但实现更有效。

参数:
X形状(n_samples,n_features)的{类数组,稀疏矩阵}

需要转换的新数据。

y忽视

未使用,此处列出是为了按照惯例实现API一致性。

sample_weight形状类似数组(n_samples,),默认=无

X中每个观察的权重。如果无,则所有观察结果均被赋予相同的权重。

返回:
X_new形状的nd数组(n_samples,n_classes)

X在新的空间中变形。

get_feature_names_out(input_features=None)[源代码]#

获取用于转换的输出要素名称。

输出的功能名称将以大写的类别名称为开头。例如,如果Transformer输出3个特征,则输出的特征名称为: ["class_name0", "class_name1", "class_name2"] .

参数:
input_features字符串或无的类数组,默认=无

仅用于通过中看到的名称验证要素名称 fit .

返回:
feature_names_out字符串对象的nd数组

转换的功能名称。

get_metadata_routing()[源代码]#

获取此对象的元数据路由。

请检查 User Guide 关于路由机制如何工作。

返回:
routingMetadataRequest

A MetadataRequest 封装路由信息。

get_params(deep=True)[源代码]#

获取此估计器的参数。

参数:
deep布尔,默认=True

如果为True,将返回此估计量和包含的作为估计量的子对象的参数。

返回:
paramsdict

参数名称映射到其值。

partial_fit(X, y=None, sample_weight=None)[源代码]#

更新k意味着对单个迷你批次X的估计。

参数:
X形状(n_samples,n_features)的{类数组,稀疏矩阵}

要集群的训练实例。必须注意的是,数据将被转换为C排序,如果给定数据不是C连续的,这将导致内存复制。如果传递了稀疏矩阵,如果它不是CSR格式,则将创建副本。

y忽视

未使用,此处列出是为了按照惯例实现API一致性。

sample_weight形状类似数组(n_samples,),默认=无

X中每个观察的权重。如果无,则所有观察结果均被赋予相同的权重。 sample_weight 在初始化期间不使用,如果 init 是可调用或用户提供的数组。

返回:
self对象

返回更新的估计器。

predict(X)[源代码]#

预测X中每个样本所属的最近集群。

在载体量化文献中, cluster_centers_ 称为代码簿,每个值都由 predict 是代码簿中最近代码的索引。

参数:
X形状(n_samples,n_features)的{类数组,稀疏矩阵}

需要预测的新数据。

返回:
labels形状的nd数组(n_samples,)

每个样本所属的集群的索引。

score(X, y=None, sample_weight=None)[源代码]#

与K均值目标上X的值相反。

参数:
X形状(n_samples,n_features)的{类数组,稀疏矩阵}

New data.

y忽视

未使用,此处列出是为了按照惯例实现API一致性。

sample_weight形状类似数组(n_samples,),默认=无

X中每个观察的权重。如果无,则所有观察结果均被赋予相同的权重。

返回:
score浮子

与K均值目标上X的值相反。

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') MiniBatchKMeans[源代码]#

请求元数据传递给 fit

请注意,此方法仅适用于以下情况 enable_metadata_routing=True (见 sklearn.set_config ).请参阅 User Guide 关于路由机制如何工作。

The options for each parameter are:

  • True :元数据被请求并传递给 fit 如果提供的话。如果未提供元数据,则会忽略请求。

  • False :未请求元数据,元估计器不会将其传递给 fit .

  • None :不请求元数据,如果用户提供元估计器,则元估计器将引发错误。

  • str :元数据应通过此给定别名而不是原始名称传递给元估计器。

默认 (sklearn.utils.metadata_routing.UNCHANGED )保留现有请求。这允许您更改某些参数的请求,而不是其他参数。

Added in version 1.3.

备注

只有当该估计器用作元估计器的子估计器时,该方法才相关,例如在 Pipeline .否则就没有效果了。

参数:
sample_weight字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged

元数据路由 sample_weight 参数 fit .

返回:
self对象

更新的对象。

set_output(*, transform=None)[源代码]#

设置输出容器。

看到 介绍 set_output API 了解如何使用API的示例。

参数:
transform{“默认”,“pandas”,“polars”},默认=无

配置输出 transformfit_transform .

  • "default" :Transformer的默认输出格式

  • "pandas" :DataFrame输出

  • "polars" :两极输出

  • None :转换配置不变

Added in version 1.4: "polars" 添加了选项。

返回:
self估计器实例

估计实例。

set_params(**params)[源代码]#

设置此估计器的参数。

该方法适用于简单估计器以及嵌套对象(例如 Pipeline ).后者具有以下形式的参数 <component>__<parameter> 以便可以更新嵌套对象的每个组件。

参数:
**paramsdict

估计参数。

返回:
self估计器实例

估计实例。

set_partial_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') MiniBatchKMeans[源代码]#

请求元数据传递给 partial_fit

请注意,此方法仅适用于以下情况 enable_metadata_routing=True (见 sklearn.set_config ).请参阅 User Guide 关于路由机制如何工作。

The options for each parameter are:

  • True :元数据被请求并传递给 partial_fit 如果提供的话。如果未提供元数据,则会忽略请求。

  • False :未请求元数据,元估计器不会将其传递给 partial_fit .

  • None :不请求元数据,如果用户提供元估计器,则元估计器将引发错误。

  • str :元数据应通过此给定别名而不是原始名称传递给元估计器。

默认 (sklearn.utils.metadata_routing.UNCHANGED )保留现有请求。这允许您更改某些参数的请求,而不是其他参数。

Added in version 1.3.

备注

只有当该估计器用作元估计器的子估计器时,该方法才相关,例如在 Pipeline .否则就没有效果了。

参数:
sample_weight字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged

元数据路由 sample_weight 参数 partial_fit .

返回:
self对象

更新的对象。

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') MiniBatchKMeans[源代码]#

请求元数据传递给 score

请注意,此方法仅适用于以下情况 enable_metadata_routing=True (见 sklearn.set_config ).请参阅 User Guide 关于路由机制如何工作。

The options for each parameter are:

  • True :元数据被请求并传递给 score 如果提供的话。如果未提供元数据,则会忽略请求。

  • False :未请求元数据,元估计器不会将其传递给 score .

  • None :不请求元数据,如果用户提供元估计器,则元估计器将引发错误。

  • str :元数据应通过此给定别名而不是原始名称传递给元估计器。

默认 (sklearn.utils.metadata_routing.UNCHANGED )保留现有请求。这允许您更改某些参数的请求,而不是其他参数。

Added in version 1.3.

备注

只有当该估计器用作元估计器的子估计器时,该方法才相关,例如在 Pipeline .否则就没有效果了。

参数:
sample_weight字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged

元数据路由 sample_weight 参数 score .

返回:
self对象

更新的对象。

transform(X)[源代码]#

将X转换为群距空间。

在新空间中,每个维度都是到集群中心的距离。请注意,即使X是稀疏的, transform 通常会很密集。

参数:
X形状(n_samples,n_features)的{类数组,稀疏矩阵}

需要转换的新数据。

返回:
X_new形状的nd数组(n_samples,n_classes)

X在新的空间中变形。