Python'da Unsupervised Learning
Benjamin Wilson
Director of Research at lateral.io
3 farklı kırmızı şarap çeşidinden 178 örnek: Barolo, Grignolino ve Barbera
Özellikler kimyasal bileşimi ölçer, ör. alkol oranı
"Renk yoğunluğu" gibi görsel özellikler
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
Şarap özelliklerinin varyansları çok farklı!
Bir özelliğin varyansı, değerlerinin yayılımını ölçer
feature variance
alcohol 0.65
malic_acid 1.24
...
od280 0.50
proline 99166.71

Şarap özelliklerinin varyansları çok farklı!
Bir özelliğin varyansı, değerlerinin yayılımını ölçer
feature variance
alcohol 0.65
malic_acid 1.24
...
od280 0.50
proline 99166.71

k-means'te: özellik varyansı = özellik etkisi
StandardScaler her özelliği ortalaması 0, varyansı 1 olacak şekilde dönüştürür
Özellikler "standartlaştırılmış" olur

from sklearn.preprocessing import StandardScalerscaler = StandardScaler()scaler.fit(samples) StandardScaler(copy=True, with_mean=True, with_std=True)samples_scaled = scaler.transform(samples)
StandardScaler ve KMeans benzer yöntemlere sahiptir
StandardScaler ile fit() / transform() kullanın
KMeans ile fit() / predict() kullanın
İki adım gerekir: önce StandardScaler, sonra KMeans
Birden çok adımı birleştirmek için sklearn pipeline kullanın
Veri bir adımdan sonrakine akar
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)
Özellik standartlaştırma ile:
varieties Barbera Barolo Grignolino
labels
0 0 59 3
1 48 0 3
2 0 0 65
Özellik standartlaştırma olmadan çok kötüydü:
varieties Barbera Barolo Grignolino
labels
0 29 13 20
1 0 46 1
2 19 0 50
StandardScaler bir "önişleme" adımıdır
MaxAbsScaler ve Normalizer diğer örneklerdir
Python'da Unsupervised Learning