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([[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 (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 估計器實例 |