Birch#

class sklearn.cluster.Birch(*, threshold=0.5, branching_factor=50, n_clusters=3, compute_labels=True, copy='deprecated')#

实现BIRCH聚类算法。

它是一种内存高效、在线学习算法,作为:class:MiniBatchKMeans 的替代方案提供。它构建了一个树形数据结构,聚类中心从叶子节点读取。这些可以是最终的聚类中心,也可以作为输入提供给另一个聚类算法,如:class:AgglomerativeClustering

更多信息请参阅:ref:用户指南 <birch>

Added in version 0.16.

Parameters:
thresholdfloat, default=0.5

通过合并新样本和最近的子簇获得的子簇半径应小于阈值。否则将开始一个新的子簇。将此值设置得非常低会促进分裂,反之亦然。

branching_factorint, default=50

每个节点中CF子簇的最大数量。如果有新样本进入,使得子簇数量超过branching_factor,则该节点将分裂为两个节点,子簇重新分配到每个节点中。该节点的父子簇被移除,并添加两个新的子簇作为两个分裂节点的父节点。

n_clustersint, instance of sklearn.cluster model or None, default=3

最终聚类步骤后的聚类数量,将叶子中的子簇视为新样本。

  • None : 不执行最终聚类步骤,返回子簇。

  • sklearn.cluster Estimator : 如果提供了模型,则将子簇视为新样本进行拟合,并将初始数据映射到最近的子簇标签。

  • int : 拟合的模型是:class:AgglomerativeClusteringn_clusters 设置为等于该整数。

compute_labelsbool, default=True

是否计算每个拟合的标签。

copybool, default=True

是否复制给定的数据。如果设置为False,初始数据将被覆盖。

Deprecated since version 1.6: copy 在1.6版本中已弃用,并将在1.8版本中移除。它对估计器没有影响,因为估计器不会对输入数据进行原地操作。

Attributes:
root__CFNode

CFTree的根。

dummy_leaf__CFNode

所有叶子节点的起始指针。

subcluster_centers_ndarray

直接从叶子读取的所有子簇的中心。

subcluster_labels_ndarray

全局聚类后分配给子簇中心的标签。

labels_ndarray of shape (n_samples,)

分配给输入数据的标签数组。如果使用partial_fit而不是fit,则分配给最后一批数据。

n_features_in_int

在:term:fit 期间看到的特征数量。

Added in version 0.24.

feature_names_in_ndarray of shape ( n_features_in_ ,)

在:term:fit 期间看到的特征名称。仅当 X 的特征名称均为字符串时定义。

Added in version 1.0.

See also

MiniBatchKMeans

替代实现,使用小批量增量更新中心位置。

Notes

树形数据结构由节点组成,每个节点包含多个子簇。节点中子簇的最大数量由分支因子决定。每个子簇维护一个线性和、平方和以及该子簇中的样本数量。此外,如果子簇不是叶子节点的成员,每个子簇还可以有一个节点作为其子节点。

对于进入根节点的新点,它与最近的子簇合并,并更新该子簇的线性和、平方和以及样本数量。这一过程递归进行,直到更新叶子节点的属性。

References

Examples

>>> from sklearn.cluster import Birch
>>> X = [[0, 1], [0.3, 1], [-0.3, 1], [0, -1], [0.3, -1], [-0.3, -1]]
>>> brc = Birch(n_clusters=None)
>>> brc.fit(X)
Birch(n_clusters=None)
>>> brc.predict(X)
array([0, 0, 0, 1, 1, 1])
fit(X, y=None)#

构建输入数据的CF树。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

输入数据。

y忽略

未使用,为了保持API一致性而存在。

Returns:
self

拟合的估计器。

fit_predict(X, y=None, **kwargs)#

执行对 X 的聚类并返回聚类标签。

Parameters:
X形状为 (n_samples, n_features) 的类数组

输入数据。

y忽略

未使用,为保持API一致性而存在。

**kwargs字典

传递给 fit 的参数。

Added in version 1.4.

Returns:
labels形状为 (n_samples,),dtype=np.int64 的 ndarray

聚类标签。

fit_transform(X, y=None, **fit_params)#

拟合数据,然后进行转换。

将转换器拟合到 Xy ,并带有可选参数 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

参数名称映射到它们的值。

partial_fit(X=None, y=None)#

在线学习。防止从头开始重建CFTree。

Parameters:
X{array-like, sparse matrix} of shape (n_samples, n_features), 默认=None

输入数据。如果未提供X,则仅执行全局聚类步骤。

y忽略

未使用,此处存在是为了通过约定保持API一致性。

Returns:
self

拟合的估计器。

predict(X)#

使用子簇的 centroids_ 预测数据。

避免计算X的行范数。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

输入数据。

Returns:
labelsndarray,形状为(n_samples,)

标记的数据。

set_output(*, transform=None)#

设置输出容器。

请参阅 介绍 set_output API 以了解如何使用API的示例。

Parameters:
transform{“default”, “pandas”, “polars”}, 默认=None

配置 transformfit_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)#

将X转换为子簇质心维度。

每个维度表示样本点到每个簇质心的距离。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

输入数据。

Returns:
X_trans{array-like, sparse matrix},形状为 (n_samples, n_clusters)

转换后的数据。