階層的視覺化

Unsupervised Learning in Python

Benjamin Wilson

Director of Research at lateral.io

視覺化用來傳達洞見

  • 「t-SNE」:建立資料集的 2D 地圖(之後介紹)
  • 「階層式叢集」(本支影片)
Unsupervised Learning in Python

群組的階層

  • 生物群可形成階層
  • 叢集彼此相含

 

動物的階層樹

Unsupervised Learning in Python

Eurovision 打分資料集

  • 各國為 2016 年 Eurovision 演出歌曲打分
  • 分數組成 2D 陣列
  • 列為國家,欄為歌曲

 

Eurovision 資料

1 https://www.eurovision.tv/page/results
Unsupervised Learning in Python

投票國家的階層式叢集

Eurovision 階層式叢集

Unsupervised Learning in Python

階層式叢集

  • 每個國家各自成為一個叢集開始
  • 每一步合併距離最近的兩個叢集
  • 持續到所有國家成為單一叢集
  • 這是「凝聚式」階層式叢集
Unsupervised Learning in Python

階層式叢集的系統樹圖(dendrogram)

  • 由下往上讀
  • 垂直線代表叢集

Eurovision 階層式叢集

Unsupervised Learning in Python

階層式叢集的系統樹圖(dendrogram)

  • 由下往上讀
  • 垂直線代表叢集

Eurovision 階層式叢集中的一個叢集

Unsupervised Learning in Python

系統樹圖,逐步解析

Eurovision 階層式叢集中的一個叢集

Unsupervised Learning in Python

系統樹圖,逐步解析

Eurovision 階層式叢集(標示 Greece/Cyprus 叢集)

Unsupervised Learning in Python

系統樹圖,逐步解析

Eurovision 階層式叢集(標示 Bulgaria/Greece/Cyprus 叢集)

Unsupervised Learning in Python

系統樹圖,逐步解析

Eurovision 階層式叢集(標示 Moldova/Russia 叢集)

Unsupervised Learning in Python

系統樹圖,逐步解析

Eurovision 階層式叢集(標示 Moldova/Russia/Armenia 叢集)

Unsupervised Learning in Python

系統樹圖,逐步解析

合併 Greece/Cyprus/Bulgaria 與 Moldova/Russia/Armenia 叢集

Unsupervised Learning in Python

系統樹圖,逐步解析

Eurovision 階層式叢集

Unsupervised Learning in Python

使用 SciPy 做階層式叢集

  • 給定 samples(分數陣列)與 country_names
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import linkage, dendrogram

mergings = linkage(samples, method='complete')
dendrogram(mergings, labels=country_names, leaf_rotation=90, leaf_font_size=6) plt.show()
Unsupervised Learning in Python

一起來練習吧!

Unsupervised Learning in Python

Preparing Video For Download...