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

均值漂移聚类使用平坦核。

均值漂移聚类旨在发现样本平滑密度中的“斑点”。它是一种基于质心的算法,通过更新给定区域内点的均值来更新质心的候选点。然后,在后处理阶段对这些候选点进行过滤,以消除近似重复项,形成最终的质心集。

使用分箱技术进行种子点初始化以提高可扩展性。

更多信息请参阅 用户指南

Parameters:
bandwidthfloat, default=None

平坦核中使用的带宽。

如果未给出,带宽将使用 sklearn.cluster.estimate_bandwidth 进行估计;有关该函数的可扩展性提示,请参阅其文档(另请参见下面的注释)。

seedsarray-like of shape (n_samples, n_features), default=None

用于初始化核的种子点。如果未设置,种子点将通过 clustering.get_bin_seeds 计算,带宽作为网格大小,并使用其他参数的默认值。

bin_seedingbool, default=False

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

min_bin_freqint, default=1

为了加快算法速度,只接受至少有 min_bin_freq 个点的箱作为种子点。

cluster_allbool, default=True

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

n_jobsint, default=None

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

  • 带宽估计和标签分配的最近邻搜索。详见 NearestNeighbors 类的文档字符串。

  • 所有种子点的爬山优化。

有关更多详细信息,请参阅 术语表

None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有处理器。有关更多详细信息,请参阅 术语表

max_iterint, default=300

聚类操作在未收敛前终止(对于该种子点)的最大迭代次数。

Added in version 0.22.

Attributes:
cluster_centers_ndarray of shape (n_clusters, n_features)

聚类中心的坐标。

labels_ndarray of shape (n_samples,)

每个点的标签。

n_iter_int

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

Added in version 0.22.

n_features_in_int

fit 期间看到的特征数量。

Added in version 0.24.

feature_names_in_ndarray of shape ( n_features_in_ ,)

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

Added in version 1.0.

See also

KMeans

K-均值聚类。

Notes

可扩展性:

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

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

请注意,estimate_bandwidth 函数的可扩展性远低于均值漂移算法,如果使用它,将成为瓶颈。

References

Dorin Comaniciu 和 Peter Meer,“Mean Shift: A robust approach toward feature space analysis”。IEEE Transactions on Pattern Analysis and Machine Intelligence。2002 年,第 603-619 页。

Examples

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

执行聚类。

Parameters:
X形状为 (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

聚类标签。

get_metadata_routing()#

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

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

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。

Returns:
paramsdict

参数名称映射到它们的值。

predict(X)#

预测X中每个样本所属的最接近的簇。

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

要预测的新数据。

Returns:
labels形状为 (n_samples,) 的 ndarray

每个样本所属的簇的索引。

set_params(**params)#

设置此估计器的参数。

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

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。