Bepaal de optimale boomdiepte
Nu ga je de parameter max_depth van de decision tree afstemmen om te ontdekken welke overfitting vermindert en toch goede modelprestatie-metrics behoudt. Je voert een for-lus uit over meerdere waarden voor max_depth, traint voor elk een decision tree en berekent vervolgens de prestatiecijfers.
De lijst depth_list met kandidaatwaarden is al voor je geladen. De array depth_tuning is voor je opgebouwd met 2 kolommen: de eerste is gevuld met de diepte-kandidaten en de tweede is een placeholder voor de recall-score. Ook zijn de features en doelvariabelen geladen als train_X, train_Y voor de trainingsdata en test_X, test_Y voor de testdata. Beide bibliotheken numpy en pandas zijn geladen als respectievelijk np en pd.
Deze oefening maakt deel uit van de cursus
Machine Learning voor marketing in Python
Oefeninstructies
- Voer een
for-lus uit over het bereik van 0 tot de lengte van de lijstdepth_list. - Initialiseer en train voor elke diepte-kandidaat een decision tree-classifier en voorspel churn op de testdata.
- Bereken voor elke diepte-kandidaat de recall-score met de functie
recall_score()en sla die op in de tweede kolom vandepth_tunning. - Maak een
pandasDataFrame vandepth_tuningmet de juiste kolomnamen.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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=___))