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)[source]#
使用平坦核的 Mean Shift 聚类。
均值漂移(Mean Shift)聚类旨在发现平滑样本密度中的“团块”。它是一种基于质心的算法,通过更新候选质心使其成为给定区域内点的均值来工作。然后,这些候选质心在后处理阶段进行过滤,以消除近似重复项,形成最终的质心集合。
为了提高可扩展性,使用分箱技术进行种子点选择。
有关如何使用 MeanShift 聚类的示例,请参阅:均值漂移聚类算法演示。
在用户指南中了解更多信息。
- 参数:
- 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,则初始核位置不是所有点的位置,而是点的离散化版本的位置,其中点被分箱到一个网格中,网格的粗糙度对应于带宽。将此选项设置为 True 将加快算法速度,因为初始化的种子会更少。默认值为 False。如果 seeds 参数不为 None,则忽略此参数。
- min_bin_freqint, default=1
为了加快算法速度,只接受那些至少包含 min_bin_freq 个点的分箱作为种子。
- cluster_allbool, default=True
如果为 True,则所有点都会被聚类,即使是那些不在任何核内的孤立点。孤立点被分配给最近的核。如果为 False,则孤立点被赋予聚类标签 -1。
- n_jobsint, default=None
用于计算的作业数。以下任务受益于并行化:
带宽估计和标签分配的最近邻搜索。详见
NearestNeighbors类的文档字符串。所有种子的爬山优化。
有关更多详细信息,请参阅词汇表。
None表示 1,除非在joblib.parallel_backend上下文中。-1表示使用所有处理器。有关更多详细信息,请参阅词汇表。- max_iterint, default=300
在聚类操作终止之前(对于该种子点),每个种子点的最大迭代次数,如果尚未收敛。
版本 0.22 新增。
- 属性:
- cluster_centers_ndarray of shape (n_clusters, n_features)
Coordinates of cluster centers.
- labels_ndarray of shape (n_samples,)
每个点的标签。
- n_iter_int
对每个种子执行的最大迭代次数。
版本 0.22 新增。
- n_features_in_int
在 拟合 期间看到的特征数。
0.24 版本新增。
- feature_names_in_shape 为 (
n_features_in_,) 的 ndarray 在 fit 期间看到的特征名称。仅当
X具有全部为字符串的特征名称时才定义。1.0 版本新增。
另请参阅
KMeansK-Means 聚类。
注意事项
可扩展性
由于此实现使用平坦核和 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 页。
示例
>>> 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)[source]#
执行聚类。
- 参数:
- Xshape 为 (n_samples, n_features) 的 array-like
要聚类的样本。
- y被忽略
未使用,按照惯例为保持 API 一致性而存在。
- 返回:
- selfobject
拟合的实例。
- fit_predict(X, y=None, **kwargs)[source]#
对
X执行聚类并返回聚类标签。- 参数:
- Xshape 为 (n_samples, n_features) 的 array-like
Input data.
- y被忽略
未使用,按照惯例为保持 API 一致性而存在。
- **kwargsdict
要传递给
fit的参数。1.4 版本新增。
- 返回:
- labels形状为 (n_samples,) 的 ndarray,dtype=np.int64
聚类标签。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查阅 用户指南,了解路由机制如何工作。
- 返回:
- routingMetadataRequest
封装路由信息的
MetadataRequest。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deepbool, default=True
如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。
- 返回:
- paramsdict
参数名称映射到其值。