Individua la profondità ottimale dell’albero
Ora effettuerai il tuning del parametro max_depth dell’albero decisionale per trovare quello che riduce l’overfitting mantenendo buone metriche di prestazione del modello. Eseguirai un ciclo for su più valori del parametro max_depth, adatterai un albero decisionale per ciascuno e poi calcolerai le metriche di prestazione.
La lista depth_list con i valori candidati è già stata caricata. L’array depth_tuning è stato creato per te con 2 colonne: la prima contiene i valori di profondità candidati e la seconda è un segnaposto per il punteggio di recall. Inoltre, le variabili di input e target sono state caricate come train_X, train_Y per il training e test_X, test_Y per il test. Le librerie numpy e pandas sono caricate rispettivamente come np e pd.
Questo esercizio fa parte del corso
Machine Learning per il marketing con Python
Istruzioni dell'esercizio
- Esegui un ciclo
forsull’intervallo da 0 alla lunghezza della listadepth_list. - Per ciascun valore candidato di profondità, inizializza e addestra un classificatore ad albero decisionale e predici il churn sui dati di test.
- Per ciascun candidato, calcola il punteggio di recall usando la funzione
recall_score()e salvalo nella seconda colonna didepth_tunning. - Crea un DataFrame di
pandasa partire dadepth_tuningcon i nomi di colonna appropriati.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Run a for loop over the range of depth list length
for index in ___(0, len(depth_list)):
# Initialize and fit decision tree with the `max_depth` candidate
mytree = DecisionTreeClassifier(___=depth_list[index])
mytree.fit(___, train_Y)
# Predict churn on the testing data
pred_test_Y = mytree.predict(___)
# Calculate the recall score
depth_tuning[index,1] = ___(test_Y, ___)
# Name the columns and print the array as pandas DataFrame
col_names = ['Max_Depth','Recall']
print(pd.DataFrame(depth_tuning, columns=___))