sklearn BIRCH: clustering incrémental
objectif
Expliquer et montrer comment clustering incrémental BIRCH pour grands jeux de données.
code minimal
import numpy as np
from sklearn.cluster import Birch
from sklearn.datasets import make_blobs
X, _ = make_blobs(n_samples=200000, centers=8, cluster_std=0.7, random_state=0)
birch = Birch(n_clusters=8, threshold=0.5)
labels = birch.fit_predict(X)
np.bincount(labels)[:5]
utilisation
# mise à jour incrémentale sur des batches
birch_partial = Birch(n_clusters=None, threshold=0.5)
for batch in np.array_split(X, 20):
birch_partial.partial_fit(batch)
labs = birch_partial.predict(X[:1000])
print(np.unique(labs, return_counts=True))
variante(s) utile(s)
# post-clusterisation k-means pour affiner les CF subclusters
birch_k = Birch(n_clusters=8, threshold=0.5).fit(X)
centers = birch_k.subcluster_centers_
print(centers.shape)
notes
- BIRCH construit un arbre CF et peut traiter des données en flux.
- threshold influence le nombre de sous-clusters; n_clusters affine en sortie.