Đánh giá phân cụm

Unsupervised Learning bằng Python

Benjamin Wilson

Director of Research at lateral.io

Đánh giá phân cụm

  • Có thể kiểm tra tương ứng với loài iris
  • ... nhưng nếu không có thông tin loài để so?
  • Đo chất lượng phân cụm
  • Giúp chọn số cụm cần tìm
Unsupervised Learning bằng Python

Iris: cụm vs. loài

  • k-means tìm được 3 cụm trong các mẫu iris
  • Các cụm có khớp với loài không?
species  setosa  versicolor  virginica
labels
0             0           2         36
1            50           0          0
2             0          48         14
Unsupervised Learning bằng Python

Bảng chéo với pandas

  • Cụm vs loài là một "bảng chéo"
  • Dùng thư viện pandas
  • Cho trước loài của mỗi mẫu dưới dạng danh sách species
print(species)
['setosa', 'setosa', 'versicolor', 'virginica', ... ]
Unsupervised Learning bằng Python

Căn hàng nhãn và loài

import pandas as pd
df = pd.DataFrame({'labels': labels, 'species': species})
print(df)
     labels     species
0         1      setosa
1         1      setosa
2         2  versicolor
3         2   virginica
4         1      setosa
...
Unsupervised Learning bằng Python

Bảng chéo nhãn và loài

ct = pd.crosstab(df['labels'], df['species'])
print(ct)
species  setosa  versicolor  virginica
labels
0             0           2         36
1            50           0          0
2             0          48         14

Đánh giá phân cụm thế nào nếu không có thông tin loài?

Unsupervised Learning bằng Python

Đo chất lượng phân cụm

  • Chỉ dùng mẫu và nhãn cụm

  • Phân cụm tốt: cụm chặt

  • Mẫu trong mỗi cụm tụ gần nhau

Unsupervised Learning bằng Python

Inertia đo chất lượng phân cụm

  • Đo độ phân tán của các cụm (thấp là tốt)
  • Khoảng cách từ mỗi mẫu đến tâm cụm của nó
  • Sau fit(), có thuộc tính inertia_
  • k-means cố gắng tối thiểu hóa inertia khi chọn cụm
from sklearn.cluster import KMeans

model = KMeans(n_clusters=3)
model.fit(samples)
print(model.inertia_)
78.9408414261
Unsupervised Learning bằng Python

Số lượng cụm

  • Phân cụm iris với số cụm khác nhau
  • Nhiều cụm hơn → inertia thấp hơn
  • Số cụm tốt nhất là bao nhiêu?

Biểu đồ đường: số cụm so với inertia

Unsupervised Learning bằng Python

Chọn bao nhiêu cụm?

  • Phân cụm tốt có cụm chặt (inertia thấp)
  • ... nhưng không quá nhiều cụm!
  • Chọn "khuỷu tay" trên đồ thị inertia
  • Nơi inertia bắt đầu giảm chậm lại
  • Ví dụ iris: 3 là hợp lý

Biểu đồ đường: số cụm so với inertia

Unsupervised Learning bằng Python

¡Vamos a practicar!

Unsupervised Learning bằng Python

Preparing Video For Download...