← retour aux snippets

sklearn BIRCH: clustering incrémental

clustering incrémental BIRCH pour grands jeux de données

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.