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 :模型擬合為AgglomerativeClustering ,n_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,則將它們分配給最后一批數據。 |
另見:
替代實現,使用小型批處理對中心的位置進行增量更新。
注
樹形數據結構由節點組成,每個節點由多個子簇組成。節點中的最大子簇數由分支因子決定。每個子簇保持一個線性和、平方和和以及該子簇中的樣本數。此外,如果子簇不是葉節點的成員,則每個子簇也可以有一個節點作為其子節點。
對于進入根的新點,它與最接近根的子簇合并,并更新線性和、平方和和以及該子簇的樣本數。這是遞歸完成的,直到葉節點的屬性被更新。
參考
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 = [[0, 1], [0.3, 1], [-0.3, 1], [0, -1], [0.3, -1], [-0.3, -1]]
>>> brc = Birch(n_clusters=None)
>>> brc.fit(X)
Birch(n_clusters=None)
>>> brc.predict(X)
array([0, 0, 0, 1, 1, 1])
方法
方法 | 說明 |
---|---|
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) 已轉換的數據 |