Unsupervised Learning in Python
Benjamin Wilson
Director of Research at lateral.io
178 Proben von 3 verschiedenen Rotweinsorten: Barolo, Grignolino und Barbera
Merkmale erfassen die chemische Zusammensetzung, z. B. den Alkoholgehalt.
Visuelle Eigenschaften wie „Farbintensität“
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
Die Weine haben sehr unterschiedliche Eigenschaften!
Die Varianz eines Merkmals misst die Streuung der Werte.
feature variance
alcohol 0.65
malic_acid 1.24
...
od280 0.50
proline 99166.71

Die Weine haben sehr unterschiedliche Eigenschaften!
Die Varianz eines Merkmals misst die Streuung der Werte.
feature variance
alcohol 0.65
malic_acid 1.24
...
od280 0.50
proline 99166.71

Bei k-Means: Merkmalsvarianz = Einfluss des Merkmals
StandardScaler wandelt jedes Merkmal so um, dass es den Mittelwert 0 und die Varianz 1 aufweist.
Merkmale werden „standardisiert“.

from sklearn.preprocessing import StandardScalerscaler = StandardScaler()scaler.fit(samples) StandardScaler(copy=True, with_mean=True, with_std=True)samples_scaled = scaler.transform(samples)
StandardScaler und KMeans haben ähnliche Methoden.
Benutze fit() / transform() mit StandardScaler
Benutze fit() / predict() mit KMeans
Durchführung zweier Schritte: erst StandardScaler, dann KMeans
Nutzung der sklearn-Pipeline, um mehrere Schritte zu kombinieren.
Die Daten durchlaufen einen Schritt nach dem anderen.
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)
Mit Standardisierung von Merkmalen:
varieties Barbera Barolo Grignolino
labels
0 0 59 3
1 48 0 3
2 0 0 65
Schlechtes Ergebnis ohne Standardisierung von Merkmalen:
varieties Barbera Barolo Grignolino
labels
0 29 13 20
1 0 46 1
2 19 0 50
StandardScaler ist ein „Vorverarbeitungsschritt“
MaxAbsScaler und Normalizer sind weitere Beispiele.
Unsupervised Learning in Python