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)[源代码]#

使用扁平核执行数据的均值漂移集群。

阅读更多的 User Guide .

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

输入数据。

bandwidthfloat,默认=无

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

如果无,则使用基于所有成对距离的中位数的启发式来确定带宽。这将花费样本数量的二次时间。sklearn. clock.estimate_bandband函数可以用于更有效地实现这一目标。

seeds形状类似阵列(n_seeds,n_features)或无

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

bin_seeding布尔,默认=假

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

min_bin_freqint,默认=1

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

cluster_all布尔,默认=True

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

max_iterint,默认=300

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

n_jobsint,默认=无

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

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

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

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

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

Added in version 0.17: 并行执行使用 n_jobs .

返回:
cluster_centers形状的nd数组(n_classes,n_features)

集群中心的坐标。

labels形状的nd数组(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])