Unsupervised Learning in Python
Benjamin Wilson
Director of Research at lateral.io
178 échantillons de 3 cépages rouges distincts : Barolo, Grignolino et Barbera
Les caractéristiques mesurent la composition chimique (p. ex. teneur en alcool)
Propriétés visuelles comme « intensité de la couleur »
from sklearn.cluster import KMeans
model = KMeans(n_clusters=3)
labels = model.fit_predict(samples)
df = pd.DataFrame({'labels': labels, 'varieties': varieties}) ct = pd.crosstab(df['labels'], df['varieties'])print(ct)
varieties Barbera Barolo Grignolino
labels
0 29 13 20
1 0 46 1
2 19 0 50
Les caractéristiques du vin ont des variances très différentes !
La variance d'une caractéristique mesure la dispersion de ses valeurs
feature variance
alcohol 0.65
malic_acid 1.24
...
od280 0.50
proline 99166.71

Les caractéristiques du vin ont des variances très différentes !
La variance d'une caractéristique mesure la dispersion de ses valeurs
feature variance
alcohol 0.65
malic_acid 1.24
...
od280 0.50
proline 99166.71

En kmeans : variance d'une caractéristique = influence de la caractéristique
StandardScaler transforme chaque caractéristique pour avoir une moyenne 0 et une variance 1
On dit que les caractéristiques sont « standardisées »

from sklearn.preprocessing import StandardScalerscaler = StandardScaler()scaler.fit(samples) StandardScaler(copy=True, with_mean=True, with_std=True)samples_scaled = scaler.transform(samples)
StandardScaler et KMeans ont des méthodes similaires
Utilisez fit() / transform() avec StandardScaler
Utilisez fit() / predict() avec KMeans
Deux étapes : StandardScaler, puis KMeans
Utilisez un pipeline sklearn pour enchaîner plusieurs étapes
Les données passent d'une étape à la suivante
from sklearn.preprocessing import StandardScaler from sklearn.cluster import KMeans scaler = StandardScaler() kmeans = KMeans(n_clusters=3)from sklearn.pipeline import make_pipelinepipeline = make_pipeline(scaler, kmeans)pipeline.fit(samples)
Pipeline(steps=...)
labels = pipeline.predict(samples)
Avec la standardisation des caractéristiques :
varieties Barbera Barolo Grignolino
labels
0 0 59 3
1 48 0 3
2 0 0 65
Sans standardisation des caractéristiques, c'était très mauvais :
varieties Barbera Barolo Grignolino
labels
0 29 13 20
1 0 46 1
2 19 0 50
StandardScaler est une étape de « prétraitement »
MaxAbsScaler et Normalizer en sont d'autres exemples
Unsupervised Learning in Python