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)[原始碼]#

使用扁平核心對資料執行均值漂移分群。

詳情請參閱使用者指南

參數:
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,則初始核心位置不是所有點的位置,而是點的離散化版本的位置,其中點被分箱到網格上,該網格的粗糙度對應於頻寬。將此選項設定為 True 將加快演算法速度,因為將初始化較少的種子。如果 seeds 參數不是 None,則忽略此選項。

min_bin_freq整數,預設值為 1

為了加快演算法速度,僅接受至少具有 min_bin_freq 個點的箱子作為種子。

cluster_all布林值,預設值為 True

如果為 True,則會對所有點進行分群,即使是那些不在任何核心內的孤立點。孤立點將被分配到最近的核心。如果為 False,則會給孤立點分配群集標籤 -1。

max_iter整數,預設值為 300

在分群操作終止(對於該種子點)之前,每個種子點的最大迭代次數(如果尚未收斂)。

n_jobs整數,預設值為 None

用於計算的作業數量。以下任務受益於平行化

  • 搜尋最近鄰居以進行頻寬估計和標籤分配。請參閱 NearestNeighbors 類別的 docstring 中的詳細資訊。

  • 所有種子的爬坡最佳化。

有關更多詳細資訊,請參閱詞彙表

None 表示 1,除非在 joblib.parallel_backend 環境中。-1 表示使用所有處理器。有關更多詳細資訊,請參閱詞彙表

在版本 0.17 中新增: 使用 n_jobs 進行平行執行。

傳回值:
cluster_centers形狀為 (n_clusters, n_features) 的 ndarray

群集中心的座標。

labels形狀為 (n_samples,) 的 ndarray

每個點的群集標籤。

注意

有關使用範例,請參閱均值漂移分群演算法的演示

範例

>>> 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])