ป้ายกำกับคลัสเตอร์ใน hierarchical clustering

Unsupervised Learning ใน Python

Benjamin Wilson

Director of Research at lateral.io

ป้ายกำกับคลัสเตอร์ใน hierarchical clustering

  • ไม่ได้เป็นแค่เครื่องมือแสดงผล!
  • สามารถดึงป้ายกำกับคลัสเตอร์จากขั้นตอนกลางใดก็ได้
  • นำไปใช้ได้ เช่น ในการทำ cross-tabulation

Eurovision hierarchical clustering

Unsupervised Learning ใน Python

การแบ่งคลัสเตอร์กลางทางและความสูงบน dendrogram

  • เช่น ที่ความสูง 15:
    • Bulgaria, Cyprus, Greece อยู่ในคลัสเตอร์เดียวกัน
    • Russia และ Moldova อยู่ในอีกคลัสเตอร์หนึ่ง
    • Armenia อยู่ในคลัสเตอร์ของตัวเอง

ขยายภาพคลัสเตอร์พร้อมเส้นแนวนอนที่ความสูง 15

Unsupervised Learning ใน Python

Dendrogram แสดงระยะห่างระหว่างคลัสเตอร์

  • ความสูงบน dendrogram = ระยะห่างระหว่างคลัสเตอร์ที่รวมกัน
  • เช่น คลัสเตอร์ที่มีแค่ Cyprus และ Greece มีระยะห่างประมาณ 6

ขยายภาพคลัสเตอร์โดยไฮไลต์คลัสเตอร์ Cyprus/Greece

Unsupervised Learning ใน Python

Dendrogram แสดงระยะห่างระหว่างคลัสเตอร์

  • ความสูงบน dendrogram = ระยะห่างระหว่างคลัสเตอร์ที่รวมกัน
  • เช่น คลัสเตอร์ที่มีแค่ Cyprus และ Greece มีระยะห่างประมาณ 6
  • คลัสเตอร์ใหม่นี้มีระยะห่างจากคลัสเตอร์ที่มีแค่ Bulgaria ประมาณ 12

ขยายภาพคลัสเตอร์โดยไฮไลต์คลัสเตอร์ Cyprus/Greece และ Cyprus/Greece/Bulgaria

Unsupervised Learning ใน Python

การแบ่งคลัสเตอร์กลางทางและความสูงบน dendrogram

  • ความสูงบน dendrogram กำหนดระยะห่างสูงสุดระหว่างคลัสเตอร์ที่รวมกัน
  • ไม่รวมคลัสเตอร์ที่ห่างกันเกินกว่านี้ (เช่น 15)

ขยายภาพคลัสเตอร์พร้อมเส้นแนวนอนที่ความสูง 15

Unsupervised Learning ใน Python

ระยะห่างระหว่างคลัสเตอร์

  • กำหนดโดย "linkage method"
  • ใน "complete" linkage: ระยะห่างระหว่างคลัสเตอร์คือระยะห่างสูงสุดระหว่างตัวอย่าง
  • ระบุผ่านพารามิเตอร์ method เช่น linkage(samples, method="complete")
  • linkage method ต่างกัน ผลลัพธ์ hierarchical clustering ก็ต่างกัน!
Unsupervised Learning ใน Python

การดึงป้ายกำกับคลัสเตอร์

  • ใช้ฟังก์ชัน fcluster()
  • คืนค่าเป็น NumPy array ของป้ายกำกับคลัสเตอร์

ขยายภาพคลัสเตอร์พร้อมเส้นแนวนอนที่ความสูง 15

Unsupervised Learning ใน Python

การดึงป้ายกำกับคลัสเตอร์ด้วย fcluster

from scipy.cluster.hierarchy import linkage
mergings = linkage(samples, method='complete')
from scipy.cluster.hierarchy import fcluster

labels = fcluster(mergings, 15, criterion='distance') print(labels)
[ 9  8 11 20  2  1 17 14 ... ]
Unsupervised Learning ใน Python

จับคู่ป้ายกำกับคลัสเตอร์กับชื่อประเทศ

เมื่อมีรายการสตริง country_names:

import pandas as pd
pairs = pd.DataFrame({'labels': labels, 'countries': country_names})
print(pairs.sort_values('labels'))
               countries  labels
5                Belarus       1
40               Ukraine       1
...
36                 Spain       5
8               Bulgaria       6
19                Greece       6
10                Cyprus       6
28               Moldova       7
...
Unsupervised Learning ใน Python

มาฝึกกันเถอะ!

Unsupervised Learning ใน Python

Preparing Video For Download...