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)[來源]#
使用平面核的均值漂移分群。
均值漂移分群旨在發現樣本平滑密度中的「斑點」。它是一種基於質心的演算法,其工作原理是將質心的候選點更新為給定區域內點的均值。然後在後處理階段篩選這些候選點,以消除接近重複的點,從而形成最終的質心集。
使用分箱技術進行播種,以提高可擴展性。
有關如何使用 MeanShift 分群的範例,請參閱:均值漂移分群演算法的演示。
在使用者指南中閱讀更多資訊。
- 參數:
- bandwidthfloat,預設值=None
平面核中使用的頻寬。
如果未提供,頻寬將使用 sklearn.cluster.estimate_bandwidth 估計;有關可擴展性的提示,請參閱該函式的文檔(另請參閱下面的「註釋」)。
- seeds形狀為 (n_samples, n_features) 的類陣列,預設為 None
用於初始化核心的種子。如果未設定,則種子將通過 clustering.get_bin_seeds 計算,其中頻寬為網格大小,其他參數使用預設值。
- bin_seedingbool,預設為 False
如果為 True,則初始核心位置不是所有點的位置,而是點的離散化版本的位置,其中點被分箱到一個粗糙度對應於頻寬的網格上。將此選項設定為 True 將加速演算法,因為將初始化更少的種子。預設值為 False。如果 seeds 參數不為 None,則忽略此選項。
- min_bin_freqint,預設為 1
為了加速演算法,僅接受至少具有 min_bin_freq 個點的分箱作為種子。
- cluster_allbool,預設為 True
如果為 True,則所有點都會被分群,即使是那些不在任何核心範圍內的孤立點。孤立點會被分配到最近的核心。如果為 False,則孤立點會被賦予叢集標籤 -1。
- n_jobsint,預設為 None
用於計算的任務數量。以下任務受益於平行化:
搜尋用於頻寬估計和標籤分配的最近鄰居。請參閱
NearestNeighbors
類的 docstring 中的詳細資訊。所有種子的爬山最佳化。
有關更多詳細資訊,請參閱詞彙表。
None
表示 1,除非在joblib.parallel_backend
內容中。-1
表示使用所有處理器。 有關更多詳細資訊,請參閱詞彙表。- max_iterint,預設為 300
在叢集操作終止(針對該種子點)之前,每個種子點的最大迭代次數(如果尚未收斂)。
在 0.22 版中新增。
- 屬性:
另請參閱
KMeans
K-Means 叢集。
註釋
可擴展性
因為此實作使用平坦核心和球樹來查找每個核心的成員,所以在較低維度中,複雜度將趨向於 O(T*n*log(n)),其中 n 是樣本數,T 是點數。在較高維度中,複雜度將趨向於 O(T*n^2)。
可以使用更少的種子來提高可擴展性,例如,在 get_bin_seeds 函式中使用較高的 min_bin_freq 值。
請注意,estimate_bandwidth 函式的可擴展性遠不如均值漂移演算法,如果使用它,它將成為瓶頸。
參考文獻
Dorin Comaniciu 和 Peter Meer,“均值漂移:一種針對特徵空間分析的穩健方法”。 IEEE 模式分析和機器智慧交易。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)[原始碼]#
執行叢集。
- 參數:
- X形狀為 (n_samples, n_features) 的類陣列
要叢集的樣本。
- y已忽略
未使用,為了 API 的一致性而存在。
- 傳回:
- self物件
已擬合的實例。
- fit_predict(X, y=None, **kwargs)[原始碼]#
在
X
上執行叢集並傳回叢集標籤。- 參數:
- X形狀為 (n_samples, n_features) 的類陣列
輸入資料。
- y已忽略
未使用,為了 API 的一致性而存在。
- **kwargsdict
要傳遞給
fit
的引數。在 1.4 版中新增。
- 傳回:
- labels形狀為 (n_samples,) 的 ndarray,dtype=np.int64
叢集標籤。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請檢查 使用者指南,了解路由機制如何運作。
- 傳回:
- routingMetadataRequest
一個封裝路由資訊的
MetadataRequest
。
- get_params(deep=True)[原始碼]#
取得此估算器的參數。
- 參數:
- deepbool,預設值為 True
若為 True,將回傳此估算器及其包含的子物件(亦為估算器)的參數。
- 傳回:
- paramsdict
參數名稱對應到它們的值。