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)#
执行使用平坦核的均值漂移聚类数据。
更多信息请参阅 用户指南 。
- Parameters:
- X形状为 (n_samples, n_features) 的类数组
输入数据。
- bandwidth浮点数, 默认=None
核带宽。如果不是 None,必须在 [0, +inf) 范围内。
如果为 None,带宽将使用基于所有成对距离中位数的启发式方法确定。这将在线性时间内取样本次数的平方。可以使用 sklearn.cluster.estimate_bandwidth 函数更高效地完成此操作。
- seeds形状为 (n_seeds, n_features) 的类数组或 None
用作初始核位置的点。如果为 None 且 bin_seeding=False,则每个数据点都用作种子。如果为 None 且 bin_seeding=True,请参见 bin_seeding。
- bin_seeding布尔值, 默认=False
如果为真,初始核位置不是所有点的位置,而是点的离散化版本的位置,其中点被分箱到与其带宽相对应的网格上。将此选项设置为 True 将加快算法速度,因为初始化的种子更少。 如果 seeds 参数不是 None,则忽略。
- min_bin_freqint, 默认=1
为了加快算法速度,只接受至少有 min_bin_freq 个点的箱子作为种子。
- cluster_all布尔值, 默认=True
如果为真,则所有点都被聚类,即使是那些不在任何核内的孤儿点。孤儿点被分配到最近的核。 如果为假,则孤儿点被赋予聚类标签 -1。
- max_iterint, 默认=300
聚类操作在未收敛的情况下,每个种子点在聚类操作终止前的最大迭代次数。
- n_jobsint, 默认=None
用于计算的作业数。以下任务受益于并行化:
带宽估计和标签分配的最近邻搜索。详见
NearestNeighbors
类的文档字符串。所有种子的爬山优化。
详见 术语表 。
None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有处理器。详见 术语表 。Added in version 0.17: 使用 n_jobs 进行并行执行。
- Returns:
- cluster_centers形状为 (n_clusters, n_features) 的 ndarray
聚类中心的坐标。
- labels形状为 (n_samples,) 的 ndarray
每个点的聚类标签。
Notes
有关示例,请参见 examples/cluster/plot_mean_shift.py 。
Examples
>>> 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])