Dendrogram
Termasuk bagian Pembelajaran Tanpa Pengawasan dalam perjalanan Machine Learning di Coddy. Pelajaran 18 dari 51.
Pohon pembuka bab ini adalah dendrogram. Setiap tanda kurung menghubungkan dua kelompok pada ketinggian tempat keduanya digabungkan: semakin tinggi kakinya, semakin jauh jarak antara kedua kelompok tersebut.
Potong pohon dengan sebuah garis, lalu setiap cabang yang dilintasi garis itu menjadi satu kelompok. Di sini, ada 4 kelompok:
scipy membangun pohon, menggambarnya, lalu memotongnya dengan fcluster:
from scipy.cluster.hierarchy import linkage, dendrogram, fcluster
Z = linkage(scaled, "ward")
dendrogram(Z, labels=names, leaf_rotation=90, color_threshold=1.2, ax=ax)
ax.axhline(1.2, color="gray", linestyle="--")
groups = fcluster(Z, t=1.2, criterion="distance")
print(groups)Ini mencetak nomor kelompok untuk setiap bola, dengan bola basket sendiri:
[2 2 2 1 1 1 3 3 3 4]Pangkas pada sisi terpanjang: kelompok-kelompok di bawah ini berjauhan.
Tantangan
SedangPemandu laut mengelompokkan 16 paus dan lumba-lumba berdasarkan panjang, berat, dan kedalaman menyelam. Kode awal menyesuaikan skala data dan membaca tinggi pemotongan, cut.
- Buat pohon ward
Zdan gambar diax: nama hewan diputar 90 derajat, dengan warna yang berhenti pada titik pemotongan. - Gambar titik pemotongan sebagai garis putus-putus abu-abu, lalu tampilkan.
- Cetak jumlah kelompok.
Untuk 11 buah dan titik pemotongan 3.5:
Cut at 3.5: 3 groupsCoddy menjelaskan pohonmu.
Coba sendiri
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from scipy.cluster.hierarchy import linkage, dendrogram, fcluster
# 16 paus dan lumba-lumba: panjang tubuh (m), berat (ton), kedalaman menyelam maksimum (m)
whales = pd.read_csv("whales.csv")
names = list(whales["animal"])
scaled = StandardScaler().fit_transform(whales[["length_m", "weight_t", "dive_m"]])
cut = float(input())
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.3) # ruang untuk nama-nama di bawah pohon
ax.set_title("Whales and Dolphins")
ax.set_ylabel("Merge height")
# Tulis kodemu di bawah ini
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pembelajaran Tanpa Pengawasan
1Menemukan Kelompok
Belajar Tanpa LabelMengukur KemiripanK-Means secara ManualK-Means dengan scikit-learnRangkuman: Anggota Gym4Pengelompokan Hierarkis
Penggabungan Langkah demi LangkahModel AglomeratifDendrogramRingkasan: Ras Anjing7PCA dalam Praktik
Melihat 64 DimensiKomponen sebagai PolaKompres dan RekonstruksiPCA Sebelum ModelRangkuman: Pemindai Wajah10Proyek: Penjelajah Digit
Amati DigitnyaPerkecil dengan PCAKelompokkan DigitBeri Nama pada KelompokTemukan yang Tidak BiasaLatihan sendiri: Compiler Python online