MeanShift#

class sklearn.cluster.MeanShift(*, bandwidth=None, seeds=None, bin_seeding=False, min_bin_freq=1, cluster_all=True, n_jobs=None, max_iter=300)[源代码]#

使用平坦核的均值漂移集群。

均值漂移集群的目的是在平滑的样本密度中发现“斑点”。这是一种基于重心的算法,其工作原理是将重心候选更新为给定区域内点的平均值。然后在后处理阶段对这些候选项进行过滤,以消除近乎重复的,以形成最终的一组重心。

为了可扩展性,使用分类技术执行播种。

有关如何使用MeanChange集群的示例,请参阅: 均值漂移集群算法的演示 .

阅读更多的 User Guide .

参数:
bandwidthfloat,默认=无

扁平内核中使用的带宽。

如果未给出,则使用sklearn. clock.estimate_bandum来估计带宽;请参阅该函数的文档,了解有关可扩展性的提示(另请参阅下面的注释)。

seeds形状类似阵列(n_samples,n_features),默认=无

用于初始化内核的种子。如果未设置,则通过集群.get_bin_seeds来计算种子,其中带宽作为网格大小,其他参数的默认值。

bin_seeding布尔,默认=假

如果为真,则初始核位置不是所有点的位置,而是离散化版本的点的位置,其中点被分类到粗糙度与带宽相对应的网格上。将此选项设置为True将加快算法速度,因为将初始化的种子更少。默认值为False。如果种子参数不是无,则被忽略。

min_bin_freqint,默认=1

为了加快算法速度,请仅接受那些至少具有min_bin_freq点的bin作为种子。

cluster_all布尔,默认=True

如果为true,则所有点都被聚类,即使是那些不在任何内核中的孤立点。孤儿被分配到最近的内核。如果为false,则孤儿被赋予集群标签-1。

n_jobsint,默认=无

用于计算的作业数。以下任务受益于并行化:

  • 搜索最近邻居以进行带宽估计和标签分配。请参阅文档字符串中的详细信息 NearestNeighbors

  • 对所有种子进行爬山优化。

看到 Glossary 了解更多详细信息。

None 意思是1,除非在a中 joblib.parallel_backend 上下文 -1 意味着使用所有处理器。看到 Glossary 了解更多详细信息。

max_iterint,默认=300

如果尚未收敛,则在集群操作终止(对于该种子点)之前每个种子点的最大迭代次数。

Added in version 0.22.

属性:
cluster_centers_形状的nd数组(n_classes,n_features)

集群中心的坐标。

labels_形状的nd数组(n_samples,)

每个点的标签。

n_iter_int

对每个种子执行的最大迭代次数。

Added in version 0.22.

n_features_in_int

期间看到的功能数量 fit .

Added in version 0.24.

feature_names_in_ :nd形状数组 (n_features_in_ ,)nd数组形状(

Names of features seen during fit. Defined only when X has feature names that are all strings.

Added in version 1.0.

参见

KMeans

K-Means聚类

注意到

可扩展性:

由于此实现使用扁平内核和Ball Tree来查找每个内核的成员,因此复杂性将趋于O(T n log(n))在较低维度中,n是样本数,T是点数。在更高维度中,复杂性将趋于O(T*n^2)。

可以通过使用更少的种子来提高可扩展性,例如通过在get_bin_seeds函数中使用更高的min_bin_freq值。

请注意,estimate_bandum函数的可扩展性比均值漂移算法小得多,并且如果使用它将成为瓶颈。

引用

Dorin Comaniciu和Peter Meer,“Mean Shift:一种面向特征空间分析的鲁棒方法”。IEEE模式分析和机器智能汇刊。2002. pp. 603-619.

示例

>>> from sklearn.cluster import MeanShift
>>> import numpy as np
>>> X = np.array([[1, 1], [2, 1], [1, 0],
...               [4, 7], [3, 5], [3, 6]])
>>> clustering = MeanShift(bandwidth=2).fit(X)
>>> clustering.labels_
array([1, 1, 1, 0, 0, 0])
>>> clustering.predict([[0, 0], [5, 5]])
array([1, 0])
>>> clustering
MeanShift(bandwidth=2)
fit(X, y=None)[源代码]#

执行集群。

参数:
X形状类似阵列(n_samples,n_features)

要聚集的样本。

y忽视

未使用,按照惯例,为了API一致性而存在。

返回:
self对象

已安装实例。

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

在上执行集群 X 并返回集群标签。

参数:
X形状类似阵列(n_samples,n_features)

输入数据。

y忽视

未使用,按照惯例,为了API一致性而存在。

**kwargsdict

将传递给的论点 fit .

Added in version 1.4.

返回:
labels形状的nd数组(n_samples,),dype =np.int64

集群标签。

get_metadata_routing()[源代码]#

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

请检查 User Guide 关于路由机制如何工作。

返回:
routingMetadataRequest

A MetadataRequest 封装路由信息。

get_params(deep=True)[源代码]#

获取此估计器的参数。

参数:
deep布尔,默认=True

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

返回:
paramsdict

参数名称映射到其值。

predict(X)[源代码]#

预测X中每个样本所属的最近集群。

参数:
X形状类似阵列(n_samples,n_features)

需要预测的新数据。

返回:
labels形状的nd数组(n_samples,)

每个样本所属的集群的索引。

set_params(**params)[源代码]#

设置此估计器的参数。

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

参数:
**paramsdict

估计参数。

返回:
self估计器实例

估计实例。