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
:模型拟合为AgglomerativeClustering
,n_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
的比较。参考文献
Tian Zhang, Raghu Ramakrishnan, Maron Livny BIRCH:一种用于大型数据库的高效数据聚类方法。 https://www.cs.sfu.ca/CourseCentral/459/han/papers/zhang96.pdf
Roberto Perdisci JBirch - BIRCH 聚类算法的 Java 实现 https://code.google.com/archive/p/jbirch
示例
>>> 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
将转换器拟合到X
和y
,并返回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
配置
transform
和fit_transform
的输出。"default"
:变换器的默认输出格式"pandas"
:DataFrame 输出"polars"
:Polars 输出None
:变换配置保持不变
1.4 版中新增:
"polars"
选项已添加。
- 返回:
- self估计器实例
估计器实例。