Birch#

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

实现 BIRCH 聚类算法。

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

用户指南中了解更多信息。

版本 0.16 中新增。

参数:
threshold浮点数, 默认值=0.5

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

branching_factor整数, 默认值=50

每个节点中 CF 子簇的最大数量。如果新样本进入导致子簇数量超过分支因子,则该节点将被分成两个节点,子簇在每个节点中重新分配。该节点的父子簇被移除,并添加两个新的子簇作为这两个分裂节点的父节点。

n_clusters整数, sklearn.cluster 模型的实例或 None, 默认值=3

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

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

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

  • int : 拟合的模型是 AgglomerativeClustering,其中 n_clusters 设置为该整数值。

compute_labels布尔值, 默认值=True

是否为每次拟合计算标签。

copy布尔值, 默认值=True

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

自 1.6 版本弃用:copy 在 1.6 版本中已弃用,并将在 1.8 版本中移除。由于估计器不对输入数据执行原地操作,因此它没有效果。

属性:
root__CFNode

CFTree 的根节点。

dummy_leaf__CFNode

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

subcluster_centers_ndarray

直接从叶节点读取的所有子簇的质心。

subcluster_labels_ndarray

子簇质心在全局聚类后分配的标签。

labels_形状为 (n_samples,) 的 ndarray

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

n_features_in_整数

fit 期间看到的特征数量。

版本 0.24 中新增。

feature_names_in_形状为 (n_features_in_,) 的 ndarray

fit 期间看到的特征名称。仅当 X 的所有特征名称均为字符串时才定义。

版本 1.0 中新增。

另请参阅

MiniBatchKMeans

使用小批量对中心位置进行增量更新的替代实现。

备注

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

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

请参阅 比较 BIRCH 和 MiniBatchKMeans,了解与 MiniBatchKMeans 的比较。

参考文献

示例

>>> 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])

有关 BIRCH 聚类算法与其他聚类算法的比较,请参阅 在玩具数据集上比较不同的聚类算法

fit(X, y=None)[源码]#

为输入数据构建 CF 树。

参数:
X形状为 (n_samples, n_features) 的 {array-like, 稀疏矩阵}

输入数据。

y忽略

未使用,按惯例在此处是为了 API 一致性。

返回:
自身

已拟合的估计器。

fit_predict(X, y=None, **kwargs)[源码]#

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

参数:
X形状为 (n_samples, n_features) 的 array-like

输入数据。

y忽略

未使用,按惯例在此处是为了 API 一致性。

**kwargs字典

传递给 fit 的参数。

版本 1.4 中新增。

返回:
labels形状为 (n_samples,) 且数据类型为 np.int64 的 ndarray

聚类标签。

fit_transform(X, y=None, **fit_params)[源码]#

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

使用可选参数 fit_params 将转换器拟合到 Xy,并返回 X 的转换版本。

参数:
X形状为 (n_samples, n_features) 的 array-like

输入样本。

y形状为 (n_samples,) 或 (n_samples, n_outputs) 的 array-like, 默认值=None

目标值(无监督转换时为 None)。

**fit_params字典

附加拟合参数。

返回:
X_new形状为 (n_samples, n_features_new) 的 ndarray 数组

转换后的数组。

get_feature_names_out(input_features=None)[源码]#

获取转换的输出特征名称。

输出特征名称将以小写类名称为前缀。例如,如果转换器输出 3 个特征,则输出特征名称为:["class_name0", "class_name1", "class_name2"]

参数:
input_features字符串类型的 array-like 或 None, 默认值=None

仅用于验证特征名称与 fit 中看到的名称是否一致。

返回:
feature_names_out字符串对象的 ndarray

转换后的特征名称。

get_metadata_routing()[源码]#

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

请查阅 用户指南 以了解路由机制的工作原理。

返回:
routingMetadataRequest

一个包含路由信息的 MetadataRequest

get_params(deep=True)[源码]#

获取此估计器的参数。

参数:
deep布尔值, 默认值=True

如果为 True,将返回此估计器及其包含的估计器子对象的参数。

返回:
params字典

参数名称及其对应值。

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

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

参数:
X形状为 (n_samples, n_features) 的 {array-like, 稀疏矩阵}, 默认值=None

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

y忽略

未使用,按惯例在此处是为了 API 一致性。

返回:
自身

已拟合的估计器。

predict(X)[源码]#

使用子簇的 centroids_ 预测数据。

避免计算 X 的行范数。

参数:
X形状为 (n_samples, n_features) 的 {array-like, 稀疏矩阵}

输入数据。

返回:
labels形状为 (n_samples,) 的 ndarray

已标记数据。

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

设置输出容器。

请参阅 引入 set_output API 以了解如何使用此 API 的示例。

参数:
transform{“default”, “pandas”, “polars”}, 默认值=None

配置 transformfit_transform 的输出。

  • "default": 转换器的默认输出格式

  • "pandas": DataFrame 输出

  • "polars": Polars 输出

  • None: 转换配置未更改

版本 1.4 中新增:添加了 "polars" 选项。

返回:
self估计器实例

估计器实例。

set_params(**params)[源码]#

设置此估计器的参数。

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

参数:
**params字典

估计器参数。

返回:
self估计器实例

估计器实例。

transform(X)[源码]#

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

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

参数:
X形状为 (n_samples, n_features) 的 {array-like, 稀疏矩阵}

输入数据。

返回:
X_trans形状为 (n_samples, n_clusters) 的 {array-like, 稀疏矩阵}

转换后的数据。