Menu
CoddyTech

Dendrogrammi

Fa parte della sezione Apprendimento non supervisionato del percorso Machine Learning di Coddy. Lezione 18 di 51.

L'albero introduttivo del capitolo è un dendrogramma. Ogni parentesi unisce due gruppi all'altezza in cui si sono fusi: più alte sono le sue gambe, più distanti erano.

Taglialo con una linea e ogni ramo attraversato dalla linea diventa un gruppo. Qui, 4:

L'albero delle palle sportive con una linea tratteggiata all'altezza di 1.2. Sotto, quattro gruppi: softball, cricket e baseball; tennis, ping-pong e golf; solo basket; pallavolo, pallamano e calcio

scipy costruisce l’albero, lo disegna e lo taglia con 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)

Questo stampa un numero di gruppo per ogni palla, con la palla da basket da sola:

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

Taglia attraverso le gambe più lunghe: i gruppi qui sotto sono molto distanti.

challenge icon

Sfida

Medio

Una guida marina raggruppa 16 balene e delfini in base alla lunghezza, al peso e alla profondità di immersione. Il codice iniziale applica loro una scala e legge l’altezza di taglio, cut.

  1. Costruisci l’albero ward Z e disegnalo su ax: ruota di 90 gradi i nomi degli animali e interrompi i colori al punto di taglio.
  2. Disegna il punto di taglio come una linea grigia tratteggiata, poi mostra il grafico.
  3. Stampa il numero di gruppi.

Per 11 frutti e un taglio a 3.5:

Cut at 3.5: 3 groups

Un albero intitolato Frutti, con i nomi delle foglie rivolti verso l’alto e una linea grigia tratteggiata all’altezza 3.5 che attraversa tre rami colorati: limone, lime e fragola; arancia, pompelmo e mango; uva, ciliegia, banana, mela e pera

Coddy descrive il tuo albero.

Provalo tu

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

# 16 balene e delfini: lunghezza del corpo (m), peso (tonnellate), profondità massima di immersione (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)  # spazio per i nomi sotto l’albero
ax.set_title("Whales and Dolphins")
ax.set_ylabel("Merge height")

# Scrivi il tuo codice qui sotto
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Apprendimento non supervisionato

Esercitati da solo: Compilatore Python online