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:AgglomerativeClustering
,n_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
Tian Zhang, Raghu Ramakrishnan, Maron Livny BIRCH: An efficient data clustering method for large databases. https://www.cs.sfu.ca/CourseCentral/459/han/papers/zhang96.pdf
Roberto Perdisci JBirch - Java implementation of BIRCH clustering algorithm https://code.google.com/archive/p/jbirch
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)#
拟合数据,然后进行转换。
将转换器拟合到
X
和y
,并带有可选参数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
配置
transform
和fit_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)
转换后的数据。