Apprentissage non supervisé en Python
Benjamin Wilson
Director of Research at lateral.io
178 échantillons provenant de trois variétés distinctes de vin rouge : Barolo, Grignolino et Barbera
Caractéristiques : mesure de la composition chimique, par exemple la teneur en alcool
Propriétés visuelles telles que l'« intensité des couleurs »
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 présentent des variations très importantes
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 présentent des variations très importantes
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

Dans kmeans : variance des caractéristiques = influence des caractéristiques
StandardScaler transforme chaque caractéristique pour qu'elle ait une moyenne de 0 et une variance de 1
Les fonctionnalités sont considérées comme « 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
Utiliser fit() / transform() avec StandardScaler
Utiliser fit() / predict() avec KMeans
Il est nécessaire de suivre deux étapes : StandardScaler, puis KMeans
Utiliser le pipeline sklearn pour combiner plusieurs étapes
Les données sont transférées d'une étape à l'autre
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 normalisation 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, la situation était très défavorable :
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 sont d'autres exemples
Apprentissage non supervisé en Python