mean_shift#

sklearn.cluster.mean_shift(X, *, bandwidth=None, seeds=None, bin_seeding=False, min_bin_freq=1, cluster_all=True, max_iter=300, n_jobs=None)[source]#

使用平坦核执行数据的 mean shift 聚类。

Read more in the User Guide.

参数:
Xshape 为 (n_samples, n_features) 的 array-like

Input data.

bandwidthfloat, default=None

核带宽。如果不是 None,则必须在范围 [0, +inf) 内。

如果为 None,则使用基于所有成对距离中位数的启发式方法确定带宽。这将花费与样本数平方成正比的时间。sklearn.cluster.estimate_bandwidth 函数可用于更有效地完成此操作。

seedsarray-like of shape (n_seeds, n_features) or None

用作初始核位置的点。如果为 None 且 bin_seeding=False,则每个数据点都用作种子。如果为 None 且 bin_seeding=True,请参阅 bin_seeding。

bin_seedingbool, default=False

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

min_bin_freqint, default=1

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

cluster_allbool, default=True

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

max_iterint, default=300

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

n_jobsint, default=None

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

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

  • 所有种子的爬山优化。

有关更多详细信息,请参阅词汇表

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

版本 0.17 中新增:使用 n_jobs 的并行执行。

返回:
cluster_centersndarray of shape (n_clusters, n_features)

Coordinates of cluster centers.

labelsndarray of shape (n_samples,)

每个点的聚类标签。

注意事项

有关用法示例,请参阅 均值漂移聚类算法演示

示例

>>> import numpy as np
>>> from sklearn.cluster import mean_shift
>>> X = np.array([[1, 1], [2, 1], [1, 0],
...               [4, 7], [3, 5], [3, 6]])
>>> cluster_centers, labels = mean_shift(X, bandwidth=2)
>>> cluster_centers
array([[3.33, 6.     ],
       [1.33, 0.66]])
>>> labels
array([1, 1, 1, 0, 0, 0])