Unsupervised Learning bằng Python
Benjamin Wilson
Director of Research at lateral.io
178 mẫu từ 3 giống rượu vang đỏ: Barolo, Grignolino, Barbera
Đặc trưng đo thành phần hóa học, ví dụ độ cồn
Thuộc tính thị giác như “độ đậm màu”
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
Các đặc trưng của rượu có phương sai rất khác nhau!
Phương sai đo độ phân tán giá trị của đặc trưng
feature variance
alcohol 0.65
malic_acid 1.24
...
od280 0.50
proline 99166.71

Các đặc trưng của rượu có phương sai rất khác nhau!
Phương sai đo độ phân tán của giá trị đặc trưng
feature variance
alcohol 0.65
malic_acid 1.24
...
od280 0.50
proline 99166.71

Trong k-means: phương sai đặc trưng = mức ảnh hưởng của đặc trưng
StandardScaler biến đổi mỗi đặc trưng có trung bình 0, phương sai 1
Khi đó các đặc trưng được “chuẩn hóa”

from sklearn.preprocessing import StandardScalerscaler = StandardScaler()scaler.fit(samples) StandardScaler(copy=True, with_mean=True, with_std=True)samples_scaled = scaler.transform(samples)
StandardScaler và KMeans có phương thức tương tự
Dùng fit() / transform() với StandardScaler
Dùng fit() / predict() với KMeans
Cần 2 bước: StandardScaler, rồi KMeans
Dùng pipeline của sklearn để ghép nhiều bước
Dữ liệu chảy từ bước này sang bước kế tiếp
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)
Khi chuẩn hóa đặc trưng:
varieties Barbera Barolo Grignolino
labels
0 0 59 3
1 48 0 3
2 0 0 65
Không chuẩn hóa đặc trưng thì rất tệ:
varieties Barbera Barolo Grignolino
labels
0 29 13 20
1 0 46 1
2 19 0 50
StandardScaler là bước “tiền xử lý”
MaxAbsScaler và Normalizer là ví dụ khác
Unsupervised Learning bằng Python