Birch#

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

实现了BIRCH聚类算法。

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

更多信息请参见用户指南

版本0.16中新增。

参数:
thresholdfloat, default=0.5

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

branching_factorint, default=50

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

n_clustersint,sklearn.cluster 模型实例或 None,默认为 3

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

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

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

  • int:模型拟合为 AgglomerativeClusteringn_clusters 设置为该整数。

compute_labelsbool,默认为 True

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

copybool,默认为 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_int

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])
fit(X, y=None)[source]#

为输入数据构建 CF 树。

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

输入数据。

y忽略

未使用,出于 API 一致性约定而在此处显示。

返回:
self

拟合的估计器。

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

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

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

输入数据。

y忽略

未使用,出于 API 一致性约定而在此处显示。

**kwargsdict

要传递给 fit 的参数。

在 1.4 版本中添加。

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

聚类标签。

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

拟合数据,然后转换它。

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

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

输入样本。

y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组,默认为 None

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

**fit_paramsdict

其他拟合参数。

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

转换后的数组。

get_feature_names_out(input_features=None)[source]#

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

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

参数:
input_features类似数组的 str 或 None,默认值=None

仅用于使用在fit中看到的名称验证特征名称。

返回:
feature_names_outstr 对象的ndarray

变换后的特征名称。

get_metadata_routing()[source]#

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

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

返回:
routingMetadataRequest

一个MetadataRequest 封装了路由信息。

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deepbool,默认值=True

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

返回:
paramsdict

参数名称与其值的映射。

partial_fit(X=None, y=None)[source]#

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

参数:
X形状为 (n_samples, n_features) 的{类似数组、稀疏矩阵},默认值=None

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

y忽略

未使用,出于 API 一致性约定而在此处显示。

返回:
self

拟合的估计器。

predict(X)[source]#

使用子簇的centroids_预测数据。

避免计算 X 的行范数。

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

输入数据。

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

标记数据。

set_output(*, transform=None)[source]#

设置输出容器。

查看介绍 set_output API,了解如何使用此 API。

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

配置transformfit_transform的输出。

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

  • "pandas":DataFrame 输出

  • "polars":Polars 输出

  • None:变换配置保持不变

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

返回:
self估计器实例

估计器实例。

set_params(**params)[source]#

设置此估计器的参数。

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

参数:
**paramsdict

估计器参数。

返回:
self估计器实例

估计器实例。

transform(X)[source]#

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

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

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

输入数据。

返回:
X_trans形状为 (n_samples, n_clusters) 的{类似数组、稀疏矩阵}

变换后的数据。