Creazione di incredibili visualizzazioni ad albero decisionale con dtreeviz.
Create amazing decision tree visualizations with dtreeviz.
Come visualizzare i modelli di albero di decisione con questa libreria utilissima

Per quanto riguarda la spiegazione dei modelli, gli alberi di decisione sono alcuni dei modelli più intuitivi e spiegabili. Ogni modello di albero di decisione può essere spiegato come un insieme di regole interpretabili dall’essere umano. Essere in grado di visualizzare i modelli di albero di decisione è importante per la spiegazione del modello e può aiutare le parti interessate e i responsabili aziendali a fidarsi di questi modelli.
Felizmente, possiamo facilmente visualizzare e interpretare gli alberi di decisione con la libreria dtreeviz. In questo articolo, dimostrerò come è possibile utilizzare dtreeviz per visualizzare modelli basati su alberi per la regressione e la classificazione.
Installazione di dtreeviz
È possibile installare facilmente dtreeviz con pip utilizzando il seguente comando:
pip install dtreeviz
Per un elenco dettagliato delle dipendenze e delle librerie aggiuntive che possono essere necessarie in base al sistema operativo utilizzato, fare riferimento a questo repository GitHub.
- Comprensione della distribuzione ipergeometrica.
- Sviluppo di cruscotti interattivi e informativi con Spark e Plotly Dash
- È un Buon Percorso di Carriera Essere un Analista dei Dati?
Visualizzazione degli alberi di regressione
In questa sezione, addestreremo un regressore di albero decisionale sul dataset del diabete. Si noti che è possibile trovare tutto il codice per questo tutorial in questo repository GitHub. Tenere presente che sto utilizzando Jupyter come ambiente per eseguire questo codice Python. È possibile trovare tutto il codice che ho scritto per questo tutorial in questo repository Github.
Importazione di librerie
Nel blocco di codice sottostante ho semplicemente importato alcune librerie comuni, inclusi i moduli DecisionTree di scikit-learn e dtreeviz.
import numpy as npimport pandas as pdfrom sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressorimport dtreeviz
Lettura dei dati
Il dataset del diabete è disponibile in scikit-learn, quindi possiamo utilizzare il codice sottostante per importare il dataset e memorizzare le caratteristiche e i valori target in array numpy chiamati X e y.
from sklearn.datasets import load_diabetesdiabetes_data = load_diabetes()X = pd.DataFrame(data = diabetes_data['data'], columns=diabetes_data['feature_names'])y = diabetes_data['target']
Addestramento del modello di albero di decisione
Per rendere l’albero facile da visualizzare, possiamo limitare la massima profondità dell’albero decisionale e addestrarlo sui dati come segue.
dtree_reg = DecisionTreeRegressor(max_depth=3)dtree_reg.fit(X, y)
Visualizzazione dell’albero
Una delle caratteristiche chiave di dtreeviz è la capacità di visualizzare i modelli di albero decisionale. Utilizzando il codice sottostante, possiamo creare una fantastica visualizzazione dell’albero decisionale che rappresenta anche visivamente i confini decisionali in ogni nodo.
viz_model = dtreeviz.model(dtree_reg, X_train=X, y_train=y, feature_names=list(X.columns), target_name='diabete')viz_model.view()

Si noti come la visualizzazione sopra ci fornisca anche i confini decisionali e lo spazio delle caratteristiche in ogni nodo, nonché le uscite di regressione e la dimensione del campione in ogni foglia.
Visualizzazione delle distribuzioni foglia
Un’altra funzione utile che dtreeviz fornisce è la possibilità di visualizzare le distribuzioni foglia. I nodi foglia di un albero decisionale contengono i valori effettivi che un albero decisionale predirà a seconda di ogni insieme di condizioni. Utilizzando la funzione rtree_leaf_distributions, possiamo creare questa visualizzazione per il nostro albero di regressione.
import matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3D%matplotlib inlineviz_model.rtree_leaf_distributions()
In base alla visualizzazione sopra, possiamo vedere che l’albero decisionale può prevedere 268,9, 208,6, 176,9, 137,7, 154,7, 274,0, 83,4 o 108,8 per la variabile target chiamata diabete. I punti sparsi orizzontalmente rappresentano la distribuzione dei valori per la variabile target diabete e la piccola linea nera rappresenta il valore medio che viene utilizzato per le previsioni in quel nodo foglia. Idealmente, le distribuzioni delle foglie dovrebbero avere bassa varianza in modo da poter avere maggiore fiducia nei valori medi utilizzati per le previsioni.
Visualizzando le Dimensioni delle Foglie
Possiamo anche visualizzare le dimensioni delle foglie, o il numero di campioni in ogni nodo foglia, come mostrato nella funzione seguente.
viz_model.leaf_sizes()
In base al grafico sopra, possiamo vedere il numero di campioni in ogni foglia. Questa visualizzazione è uno strumento utile per valutare quanto possiamo essere sicuri nelle previsioni dell’albero di regressione.
Visualizzazione degli Alberi di Classificazione
Possiamo anche visualizzare gli alberi di classificazione con dtreeviz e le visualizzazioni appaiono leggermente diverse rispetto a quelle create per gli alberi di regressione. Per questa sezione, addestreremo e visualizzeremo un modello decisionale utilizzando il dataset del Cancro al Seno del Wisconsin.
Lettura dei Dati
Il dataset del Cancro al Seno del Wisconsin è disponibile in scikit-learn, quindi possiamo caricarlo utilizzando il codice qui sotto.
from sklearn.datasets import load_breast_cancercancer_data = load_breast_cancer()X = pd.DataFrame(data = cancer_data['data'], columns=cancer_data['feature_names'])y = cancer_data['target']
Addestramento di un Modello di Albero di Decisione
Come al solito, addestrare un modello di albero decisionale con scikit-learn è semplice. Possiamo anche impostare un vincolo sulla profondità massima dell’albero per renderlo più facile da visualizzare.
dtree_clf = DecisionTreeClassifier(max_depth=4)dtree_clf.fit(X, y)
Visualizzazione dell’Albero di Decisione
Possiamo utilizzare la stessa funzione dell’albero di regressione dalla sezione precedente per visualizzare l’albero di classificazione. Tuttavia, la visualizzazione apparirà leggermente diversa.
viz_model = dtreeviz.model(dtree_clf, X_train=X, y_train=y, feature_names=list(X.columns), target_name='cancro')viz_model.view()

Notare come la visualizzazione dell’albero di classificazione sopra sia diversa dalla visualizzazione dell’albero di regressione nella sezione precedente. Invece di vedere un grafico a dispersione in ogni nodo con la caratteristica selezionata e il target, vediamo istogrammi colorati che mostrano la distribuzione delle classi in ogni nodo.
Visualizzazione delle Distribuzioni delle Foglie
Possiamo anche visualizzare le distribuzioni delle classi per le foglie utilizzando la stessa funzione per visualizzare le distribuzioni delle foglie per l’albero di regressione.
viz_model.ctree_leaf_distributions()

Ogni foglia ha un grafico a barre impilate associato ad essa che presenta la distribuzione delle etichette di classe per i campioni in quella foglia. La maggior parte delle foglie ha campioni che appartengono in modo schiacciante a una classe, il che è un buon segno e ci aiuta ad avere fiducia nelle previsioni del modello.
Visualizzazione dello spazio delle caratteristiche
Possiamo anche visualizzare lo spazio delle caratteristiche del classificatore utilizzando la seguente funzione.
viz_model.ctree_feature_space()
Il grafico dello spazio delle caratteristiche sopra ci fornisce l’accuratezza di addestramento dell’albero di classificazione, nonché un diagramma a dispersione di due caratteristiche e un confine decisionale lineare che può essere utilizzato per separare le due classi.
Sommario
Per quanto riguarda la visualizzazione dei modelli basati su alberi, dtreeviz è una potente libreria che fornisce diverse utili funzioni di visualizzazione. Ho coperto solo alcune delle funzioni fornite in questa libreria e ci sono molte altre caratteristiche aggiuntive che puoi leggere nel repository di GitHub di dtreeviz. Come al solito, puoi trovare tutto il codice di questo articolo sul mio GitHub.
Iscriviti alla mia mailing list
Iscriviti alla mia mailing list per ricevere aggiornamenti sul mio contenuto di data science. Riceverai anche la mia guida gratuita Step-By-Step Guide to Solving Machine Learning Problems quando ti iscrivi! Puoi anche seguirmi su Twitter per gli aggiornamenti sul contenuto.
E mentre ci sei, considera di unirti alla comunità di Nisoo per leggere articoli di migliaia di altri scrittori.
Fonti
- Terence Parr, dtreeviz: Decision Tree Visualization , (2023), GitHub.