Identifica la profundidad óptima del árbol
Ahora vas a ajustar el parámetro max_depth del árbol de decisión para encontrar el que reduce el sobreajuste y mantiene unas buenas métricas de rendimiento del modelo. Ejecutarás un bucle for con varios valores de max_depth, ajustarás un árbol de decisión para cada uno y luego calcularás las métricas de rendimiento.
La lista depth_list con los candidatos del parámetro ya está cargada. El array depth_tuning se ha creado con 2 columnas: la primera contiene los candidatos de profundidad y la segunda es un marcador de posición para el recall. Además, las variables de características y objetivo se han cargado como train_X, train_Y para los datos de entrenamiento y test_X, test_Y para los datos de test. Las librerías numpy y pandas están cargadas como np y pd, respectivamente.
Este ejercicio forma parte del curso
Machine Learning para marketing en Python
Instrucciones del ejercicio
- Ejecuta un bucle
forsobre el rango de 0 hasta la longitud de la listadepth_list. - Para cada candidato de profundidad, inicializa y ajusta un clasificador de árbol de decisión y predice el churn en los datos de test.
- Para cada candidato de profundidad, calcula el recall usando la función
recall_score()y guárdalo en la segunda columna dedepth_tuning. - Crea un DataFrame de
pandasa partir dedepth_tuningcon los nombres de columnas adecuados.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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=___))