Menu
CoddyTech

Leggere un albero

Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 28 di 58.

Le domande di un albero sono leggibili, quindi puoi controllare cosa ha imparato. Segui il percorso di un fiore lungo 5.1 cm e largo 1.6 cm nell'albero dell'iris:

L'albero dell'iris rappresentato con riquadri e un percorso illuminato in arancione: larghezza del petalo 0.80 o meno? No, 1.6. Lunghezza del petalo 4.95 o meno? No, 5.1. Il percorso termina alla classe 2

export_text stampa le stesse domande come testo, un rientro per livello:

from sklearn.tree import export_text

print(export_text(tree, feature_names=["petal_length", "petal_width"]))

Stampa:

|--- petal_width <= 0.80
|   |--- class: 0
|--- petal_width >  0.80
|   |--- petal_length <= 4.95
|   |   |--- class: 1
|   |--- petal_length >  4.95
|   |   |--- class: 2

Ogni riga risponde solo alle domande sul proprio percorso. La classe 2 è virginica, una risposta sensata per petali lunghi e larghi.

challenge icon

Sfida

Medio

L’albero di un negozio di formaggi assegna a un formaggio una categoria: fresh, soft o hard, in base al suo contenuto d’acqua e alle settimane di stagionatura. Il codice iniziale lo addestra e legge un nuovo formaggio.

  1. Stampa le domande dell’albero con i nomi delle caratteristiche.
  2. Eseguilo, leggi le domande e completa by_hand in modo che ponga le stesse domande con if/else e restituisca la stessa risposta.

Dopo la stampa, per un formaggio che l’albero classifica come soft:

By hand: soft
The tree: soft

Provalo tu

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, export_text

# Una fila por queso: contenido de agua (%), semanas de maduración y tipo
cheeses = pd.read_csv("cheeses.csv")
features = ["moisture_pct", "aged_weeks"]
X_train, X_test, y_train, y_test = train_test_split(cheeses[features], cheeses["cheese"], test_size=0.25, random_state=0)
tree = DecisionTreeClassifier(max_depth=2, random_state=0)
tree.fit(X_train, y_train)

# Un queso nuevo al que poner nombre
moisture = int(input())
aged = int(input())
new_cheese = pd.DataFrame([[moisture, aged]], columns=features)

# Escribe tu código a continuación: imprime el árbol y luego responde en by_hand del mismo modo que él


def by_hand(moisture, aged):
    return "fresh"


# No cambies las líneas de abajo
print("By hand:", by_hand(moisture, aged))
print("The tree:", tree.predict(new_cheese)[0])
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 supervisionato

Esercitati da solo: Compilatore Python online