sklearn.cluster.Birch?

class sklearn.cluster.Birch(*, threshold=0.5, branching_factor=50, n_clusters=3, compute_labels=True, copy=True)

[源碼]

實現Birch聚類算法

它是一種內存高效的在線學習算法,可以替代MiniBatchKMeans。它構造了一個樹形數據結構,并從葉子中讀取聚類質心。這些可以是最終的聚類質心,也可以作為另一種聚類算法的輸入,比如聚類。

用戶指南中閱讀更多內容。

New in version 0.16.

參數 說明
threshold float, default=0.5
通過合并新樣本和最近的子簇獲得的子簇的半徑應該小于閾值。否則,將啟動一個新的子聚類。將此值設置為非常低將促進拆分,反之亦然。
branching_factor int, default=50
每個節點中CF子聚類的最大數目。如果一個新的樣本進入,使得子簇的數目超過分支因子,那么該節點被分成兩個節點,每個子簇都重新分布。刪除該節點的父聚類,并將兩個新的子聚類添加為兩個拆分節點的父級。
n_clusters int, instance of sklearn.cluster model, default=3
最后的聚類步驟之后的簇數,該步驟將葉子中的子簇作為新的樣本處理。
- None:不執行最后的聚類步驟,子聚類按原樣返回。
- sklearn.cluster估計器:如果提供了一個模型,則該模型將子聚類作為新樣本處理進行擬合,并將初始數據映射到最近的子聚類的標簽上。
- int:模型擬合為AgglomerativeClusteringn_clusters設置為整數。
compute_labels compute_labels
是否為每一次擬合計算標簽
copy bool, default=True
是否復制給定數據。如果設置為False,則將覆蓋初始數據。
屬性 說明
root_ _CFNode
CF樹的根
dummy_leaf_ _CFNode
啟動指向所有葉子的指針
subcluster_centers_ ndarray
所有子簇的質心直接從葉子中讀取
subcluster_labels_ ndarray
在全局聚類后,分配給子簇的標簽。
labels_ ndarray of shape (n_samples,)
分配給輸入數據的標簽數組。如果使用partial_fit而不是fit,則將它們分配給最后一批數據。

另見:

MiniBatchKMeans

替代實現,使用小型批處理對中心的位置進行增量更新。

樹形數據結構由節點組成,每個節點由多個子簇組成。節點中的最大子簇數由分支因子決定。每個子簇保持一個線性和、平方和和以及該子簇中的樣本數。此外,如果子簇不是葉節點的成員,則每個子簇也可以有一個節點作為其子節點。

對于進入根的新點,它與最接近根的子簇合并,并更新線性和、平方和和以及該子簇的樣本數。這是遞歸完成的,直到葉節點的屬性被更新。

參考

Tian Zhang, Raghu Ramakrishnan, Maron Livny BIRCH: An efficient data clustering method for large databases.https://www.cs.sfu.ca/CourseCentral/459/han/papers/zhang96.pdf

Roberto Perdisci JBirch - Java implementation of BIRCH clustering algorithmhttps://code.google.com/archive/p/jbirch

示例

>>> from sklearn.cluster import Birch
>>> X = [[01], [0.31], [-0.31], [0-1], [0.3-1], [-0.3-1]]
>>> brc = Birch(n_clusters=None)
>>> brc.fit(X)
Birch(n_clusters=None)
>>> brc.predict(X)
array([000111])

方法

方法 說明
fit(self, X[, y]) 為輸入數據構建一個CF樹。
fit_predict(self, X[, y]) 在X上執行聚類并返回聚類標簽
fit_transform(self, X[, y]) 擬合數據,然后轉換它。
get_params(self[, deep]) 獲取此估計器的參數
partial_fit(self[, X, y]) 在線學習
predict(self, X) 利用子簇的質心預測數據。
set_params(self, **params) 設置此估計器的參數
transform(self, X) 將X變換為子簇質心維數
__init__(self, *, threshold=0.5, branching_factor=50, n_clusters=3, compute_labels=True, copy=True)

[源碼]

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

fit(self, X, y=None)

[源碼]

為輸入數據構建一個CF樹。

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
輸入數據
y Ignored 未使用,在此按約定呈現為API一致性。
返回值 說明
self object
已擬合的估計器
fit_predict(self, X, y=None)

[源碼]

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

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

[源碼]

擬合數據,然后轉換它。

參數 說明
X {array-like, sparse matrix, dataframe} of shape (n_samples, n_features)
y ndarray of shape (n_samples,), default=None
目標值
返回值 說明
**fit_params dict
轉換后的數組
get_params(self, deep=True)

[源碼]

獲取此估計器的參數

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

[源碼]

在線學習。防止CFTree從頭開始重建

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
輸入數據。如果沒有提供X,則只執行全局聚類步驟。
y Ignored
未使用,在此按約定呈現為API一致性。
返回值 說明
self object 已擬合的估計器
predict(self, X)

[源碼]

利用子簇的 centroids_ 預測數據。

避免計算X的行范數。

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
輸入數據。
返回值 說明
labels ndarray of shape(n_samples,)
標簽的數據
set_params(self, **params)

[源碼]

設置此估計器的參數

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

表格 說明
**params dict
估計器參數
返回值 說明
self object
估計器實例
transform(self, X)

[源碼]

將X轉換為子簇質心維數。

每個維度表示從樣本點到每個簇質心的距離。

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
輸入數據。
返回值 說明
X_trans {array-like, sparse matrix} of shape (n_samples, n_clusters)
已轉換的數據