Învățare nesupervizată în Python
Benjamin Wilson
Director of Research at lateral.io
178 de mostre din 3 soiuri distincte de vin roșu: Barolo, Grignolino și Barbera
Caracteristicile măsoară compoziția chimică, de ex. conținutul de alcool
Proprietăți vizuale precum „intensitatea culorii"
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
Caracteristicile vinului au varianțe foarte diferite!
Varianța unei caracteristici măsoară dispersia valorilor sale
feature variance
alcohol 0.65
malic_acid 1.24
...
od280 0.50
proline 99166.71

Caracteristicile vinului au varianțe foarte diferite!
Varianța unei caracteristici măsoară dispersia valorilor sale
feature variance
alcohol 0.65
malic_acid 1.24
...
od280 0.50
proline 99166.71

În k-means: varianța caracteristicii = influența caracteristicii
StandardScaler transformă fiecare caracteristică la medie 0 și varianță 1
Caracteristicile sunt „standardizate"

from sklearn.preprocessing import StandardScalerscaler = StandardScaler()scaler.fit(samples) StandardScaler(copy=True, with_mean=True, with_std=True)samples_scaled = scaler.transform(samples)
StandardScaler și KMeans au metode similare
Utilizați fit() / transform() cu StandardScaler
Utilizați fit() / predict() cu KMeans
Sunt necesari doi pași: StandardScaler, apoi KMeans
Utilizați un pipeline sklearn pentru a combina mai mulți pași
Datele trec de la un pas la altul
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)
Cu standardizarea caracteristicilor:
varieties Barbera Barolo Grignolino
labels
0 0 59 3
1 48 0 3
2 0 0 65
Fără standardizarea caracteristicilor, rezultatul a fost foarte slab:
varieties Barbera Barolo Grignolino
labels
0 29 13 20
1 0 46 1
2 19 0 50
StandardScaler este un pas de „preprocesare"
MaxAbsScaler și Normalizer sunt alte exemple
Învățare nesupervizată în Python