Daha iyi kümeleme için özellik dönüştürme

Python'da Unsupervised Learning

Benjamin Wilson

Director of Research at lateral.io

Piyemonte şarap veri kümesi

  • 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

1 Kaynak: https://archive.ics.uci.edu/ml/datasets/Wine
Python'da Unsupervised Learning

Şarapları kümeleme

from sklearn.cluster import KMeans
model = KMeans(n_clusters=3)
labels = model.fit_predict(samples)
Python'da Unsupervised Learning

Kümeler ve çeşitler

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
Python'da Unsupervised Learning

Özellik varyansları

  • Ş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

od280 değişkeni ile malic_acid değişkeninin serpilme grafiği

Python'da Unsupervised Learning

Özellik varyansları

  • Ş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

od280 değişkeninin serpilme grafiği ve gözlem numarası

Python'da Unsupervised Learning

StandardScaler

  • 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

Standartlaştırılmış od280 ve standartlaştırılmış proline serpilme grafiği

Python'da Unsupervised Learning

sklearn StandardScaler

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
scaler.fit(samples) StandardScaler(copy=True, with_mean=True, with_std=True)
samples_scaled = scaler.transform(samples)
Python'da Unsupervised Learning

Benzer yöntemler

  • StandardScaler ve KMeans benzer yöntemlere sahiptir

  • StandardScaler ile fit() / transform() kullanın

  • KMeans ile fit() / predict() kullanın

Python'da Unsupervised Learning

Önce StandardScaler, sonra KMeans

  • İ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

Python'da Unsupervised Learning

Pipeline'lar çok adımı birleştirir

from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
scaler = StandardScaler()
kmeans = KMeans(n_clusters=3)

from sklearn.pipeline import make_pipeline
pipeline = make_pipeline(scaler, kmeans)
pipeline.fit(samples)
Pipeline(steps=...)
labels = pipeline.predict(samples)
Python'da Unsupervised Learning

Özellik standartlaştırma kümeleri iyileştirir

Ö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
Python'da Unsupervised Learning

sklearn önişleme adımları

  • StandardScaler bir "önişleme" adımıdır

  • MaxAbsScaler ve Normalizer diğer örneklerdir

Python'da Unsupervised Learning

Hadi pratik yapalım!

Python'da Unsupervised Learning

Preparing Video For Download...