Menu
CoddyTech

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:

Pohon bola olahraga dengan garis putus-putus pada ketinggian 1.2. Di bawahnya, ada empat kelompok: softball, kriket, dan baseball; tenis, tenis meja, dan golf; bola basket sendiri; bola voli, bola tangan, dan sepak bola

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.

challenge icon

Tantangan

Sedang

Pemandu laut mengelompokkan 16 paus dan lumba-lumba berdasarkan panjang, berat, dan kedalaman menyelam. Kode awal menyesuaikan skala data dan membaca tinggi pemotongan, cut.

  1. Buat pohon ward Z dan gambar di ax: nama hewan diputar 90 derajat, dengan warna yang berhenti pada titik pemotongan.
  2. Gambar titik pemotongan sebagai garis putus-putus abu-abu, lalu tampilkan.
  3. Cetak jumlah kelompok.

Untuk 11 buah dan titik pemotongan 3.5:

Cut at 3.5: 3 groups

Pohon berjudul Fruits, nama daun mengarah ke atas, dan garis putus-putus abu-abu pada ketinggian 3.5 yang melintasi tiga cabang berwarna: lemon, lime, dan strawberry; orange, grapefruit, dan mango; grape, cherry, banana, apple, dan pear

Coddy 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
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pembelajaran Tanpa Pengawasan

Latihan sendiri: Compiler Python online