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
每个样本所属的簇的索引。