Menu
CoddyTech

Dendrogramlar

Coddy'nin Machine Learning Journey'sinin Denetimsiz Öğrenme bölümünün bir parçası. Ders 18 / 51.

Bölümün başındaki ağaç bir dendrogramdır. Her parantez, iki grubu birleştikleri yükseklikte birleştirir: bacakları ne kadar uzunsa, gruplar birbirinden o kadar uzaktır.

Bir çizgiyle kesin; çizginin kestiği her dal bir grup oluşturur. Burada 4 grup:

Spor topu ağacı, 1.2 yüksekliğinde kesikli bir çizgiyle gösteriliyor. Altında dört grup: softball, kriket ve beyzbol; tenis, masa tenisi ve golf; tek başına basketbol; voleybol, hentbol ve futbol

scipy ağacı oluşturur, çizer ve fcluster ile keser:

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)

Bu, her top için bir grup numarası yazdırır; basketbol topu tek başına:

[2 2 2 1 1 1 3 3 3 4]

En uzun bacakları keserek geçin: aşağıdaki gruplar birbirinden uzaktır.

challenge icon

Görev

Orta

Bir deniz canlıları rehberi, 16 balina ve yunusu uzunluk, ağırlık ve dalış derinliğine göre gruplandırıyor. Başlangıç kodu bunları ölçeklendiriyor ve kesme yüksekliğini, cut değerini okuyor.

  1. Ward ağacını Z ile oluştur ve ax üzerinde çiz: hayvan adlarını 90 derece döndür, renkleri kesme yüksekliğinde durdur.
  2. Kesme yüksekliğini gri kesikli bir çizgiyle göster, ardından grafiği görüntüle.
  3. Grup sayısını yazdır.

11 meyve ve 3.5 kesme yüksekliği için:

Cut at 3.5: 3 groups

Meyveler başlıklı bir ağaç; yaprak adları yukarı doğru uzanıyor ve 3.5 yüksekliğindeki gri kesikli çizgi üç renkli dalı kesiyor: limon, misket limonu ve çilek; portakal, greyfurt ve mango; üzüm, kiraz, muz, elma ve armut

Coddy ağacını açıklıyor.

Kendin dene

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from scipy.cluster.hierarchy import linkage, dendrogram, fcluster

# 16 balina ve yunus: vücut uzunluğu (m), ağırlık (ton), en derin dalış (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)  # ağacın altındaki isimler için yer
ax.set_title("Whales and Dolphins")
ax.set_ylabel("Merge height")

# Kodunuzu aşağıya yazın
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Denetimsiz Öğrenme bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi