sklearn.cluster.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)

[源碼]

使用平坦核的均值移位聚類

均值移位聚類的目的是在平滑的樣本密度中發現“blobs”。它是一種基于質心的算法,它的工作方式是將候選的質心更新為給定區域內點的平均值。然后,在后處理階段對這些候選對象進行過濾,以消除幾乎重復的情況,形成最終的質心集。

種子是使用可伸縮性的聯調技術執行的。

用戶指南中閱讀更多內容

參數 說明
bandwidth float, default=None
RBF核中使用的帶寬。如果不給出帶寬,則使用sklearn.cluster.estimate_bandwidth來估算帶寬;有關可伸縮性的提示,請參閱該函數的文檔(另請參閱下面的Notes)。
seeds array-like of shape (n_samples, n_features), default=None
用于初始化核的種子。如果未設置,則通過clustering.get_bin_seeds計算,帶寬作為網格大小并且其他參數的默認 。
bin_seeding bool, default=False
如果是True,初始內核位置不是所有點的位置,而是點的離散版本的位置,其中點被綁定到一個網格上,網格的粗度與帶寬相對應。將此選項設置為True將加快算法的速度,因為初始化的種子將減少。默認值為False。如果種子參數是None,就忽略它。
min_bin_freq int, default=1
要加快算法的速度,只接受那些至少有min_bin_freq個點的箱子作為種子。
cluster_all bool, default=True
如果為True,那么所有的點都是聚在一起的,甚至那些不在任何內核中的孤立點也是如此。孤立點被分配到最近的內核。如果為False,則為孤立點指定聚類標簽-1。
n_jobs int, default=None
用于計算的任務數。這是通過計算n_init中的每一個并行運行來實現的。

None意味著1,除非在joblib.parallel_backend上下文中。-1指使用所有處理器。有關詳細信息,請參閱Glossary
max_iter int, default=300
如果尚未收斂,則聚類操作終止之前的每個種子點的最大迭代次數(對于該種子點)。
屬性 說明
cluster_centers_ array, [n_clusters, n_features]
簇中心坐標
labels_ array of shape (n_samples,)
每個點的標簽。
n_iter_ int
對每個種子執行的最大迭代次數。

新版本0.22。

可伸縮性:

因為這個實現使用一個扁平的內核和一個Ball樹來查找每個內核的成員,所以在較低的維度上,復雜度將趨向于O(T*n*log(N)),其中n是樣本數,T是點數。在較高的維數中,復雜度趨向于O(T*n^2)。

可以通過使用更少的種子來提高可伸縮性,例如在 get_bin_seeds函數中使用更高的min_bin_freq值。

請注意,estimate_bandwidth函數比MeanShift算法的可伸縮性要小得多,如果使用它,將成為瓶頸。

參考

Dorin Comaniciu and Peter Meer, “Mean Shift: A robust approach toward feature space analysis”. IEEE Transactions on Pattern Analysis and Machine Intelligence. 2002. pp. 603-619.

示例

>>> from sklearn.cluster import MeanShift
>>> import numpy as np
>>> X = np.array([[11], [21], [10],
...               [47], [35], [36]])
>>> clustering = MeanShift(bandwidth=2).fit(X)
>>> clustering.labels_
array([111000])
>>> clustering.predict([[00], [55]])
array([10])
>>> clustering
MeanShift(bandwidth=2)

方法

方法 說明
fit(self, X[, y]) 執行聚類
fit_predict(self, X[, y]) 在X上執行聚類并返回聚類標簽
get_params(self[, deep]) 獲取此估計器的參數
predict(self, X) 預測X中每個樣本所屬的最接近的聚類
set_params(self, **params) 設置此估計器的參數
__init__(self, *, bandwidth=None, seeds=None, bin_seeding=False, min_bin_freq=1, cluster_all=True, n_jobs=None, max_iter=300)

[源碼]

初始化self。請參閱help(type(self))以獲得準確的說明。

fit(self, X, y=None)

[源碼]

執行聚類

參數 說明
X array-like of shape (n_samples, n_features)
樣本聚類
y Ignored
fit_predict(self, X, y=None)

[源碼]

在X上執行聚類并返回聚類標簽。

參數 說明
X array-like of shape (n_samples, n_features)
輸入數據
y Ignored
未使用,在此按約定呈現為api一致性。
返回值 說明
labels ndarray of shape (n_samples,)
聚類標簽
get_params(self, deep=True)

[源碼]

獲取此估計器的參數

參數 說明
deep bool, default=True
如果為True,則將返回此估計器的參數和所包含的作為估計量的子對象。
返回值 說明
params mapping of string to any
映射到其值的參數名稱
predict(self, X)

[源碼]

預測X中每一個樣本所屬的最接近的聚類。

參數 說明
X {array-like, sparse matrix}, shape=[n_samples, n_features]
新的預測數據
返回值 說明
labels array, shape [n_samples,]
每個樣本所屬的聚類的索引
set_params(self, **params)

[源碼]

設置此估計器的參數

該方法適用于簡單估計器以及嵌套對象(例如pipelines)。后者具有表單的 <component>__<parameter>參數,這樣就可以更新嵌套對象的每個組件。

表格 說明
**params dict
估計器參數
返回值 說明書
self object
估計器實例