Unsupervised Learning ใน Python
Benjamin Wilson
Director of Research at lateral.io
ตัวอย่าง 178 รายการจากไวน์แดง 3 พันธุ์: Barolo, Grignolino และ Barbera
ฟีเจอร์วัดองค์ประกอบทางเคมี เช่น ปริมาณแอลกอฮอล์
คุณสมบัติทางสายตา เช่น "ความเข้มของสี"
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
ฟีเจอร์ของไวน์มีความแปรปรวนต่างกันมาก!
ความแปรปรวนของฟีเจอร์วัดการกระจายของค่า
feature variance
alcohol 0.65
malic_acid 1.24
...
od280 0.50
proline 99166.71

ฟีเจอร์ของไวน์มีความแปรปรวนต่างกันมาก!
ความแปรปรวนของฟีเจอร์วัดการกระจายของค่า
feature variance
alcohol 0.65
malic_acid 1.24
...
od280 0.50
proline 99166.71

ใน KMeans: ความแปรปรวนของฟีเจอร์ = อิทธิพลของฟีเจอร์
StandardScaler แปลงแต่ละฟีเจอร์ให้มีค่าเฉลี่ย 0 และความแปรปรวน 1
เรียกว่าฟีเจอร์ที่ผ่านการ "standardize" แล้ว

from sklearn.preprocessing import StandardScalerscaler = StandardScaler()scaler.fit(samples) StandardScaler(copy=True, with_mean=True, with_std=True)samples_scaled = scaler.transform(samples)
StandardScaler และ KMeans มีเมธอดที่คล้ายกัน
ใช้ fit() / transform() กับ StandardScaler
ใช้ fit() / predict() กับ KMeans
ต้องทำสองขั้นตอน: StandardScaler แล้วจึง KMeans
ใช้ pipeline ของ sklearn เพื่อรวมหลายขั้นตอนเข้าด้วยกัน
ข้อมูลไหลจากขั้นตอนหนึ่งไปยังขั้นตอนถัดไป
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)
เมื่อ standardize ฟีเจอร์แล้ว:
varieties Barbera Barolo Grignolino
labels
0 0 59 3
1 48 0 3
2 0 0 65
ไม่ standardize ฟีเจอร์ให้ผลที่แย่มาก:
varieties Barbera Barolo Grignolino
labels
0 29 13 20
1 0 46 1
2 19 0 50
StandardScaler เป็นขั้นตอน "preprocessing"
MaxAbsScaler และ Normalizer เป็นตัวอย่างอื่น
Unsupervised Learning ใน Python