Optimale Baumtiefe bestimmen
Jetzt stimmst du den Parameter max_depth des Decision Trees ab, um diejenige Tiefe zu finden, die Overfitting reduziert und gleichzeitig gute Modellmetriken beibehält. Du führst eine for-Schleife über mehrere max_depth-Werte aus, passt für jeden einen Decision Tree an und berechnest anschließend die Leistungsmetriken.
Die Liste depth_list mit den Kandidatenwerten ist bereits geladen. Das Array depth_tuning wurde für dich mit 2 Spalten erstellt: Die erste ist mit den Tiefen-Kandidaten gefüllt, die zweite ist ein Platzhalter für den Recall-Score. Außerdem sind die Features und Zielvariablen als train_X, train_Y für die Trainingsdaten sowie test_X, test_Y für die Testdaten geladen. Die Bibliotheken numpy und pandas sind als np bzw. pd importiert.
Diese Übung ist Teil des Kurses
Machine Learning für Marketing mit Python
Anleitung zur Übung
- Führe eine
for-Schleife über den Bereich von 0 bis zur Länge der Listedepth_listaus. - Initialisiere für jeden Tiefen-Kandidaten einen Decision-Tree-Klassifikator, trainiere ihn und sage Churn auf den Testdaten voraus.
- Berechne für jeden Tiefen-Kandidaten den Recall-Score mit der Funktion
recall_score()und speichere ihn in der zweiten Spalte vondepth_tunning. - Erzeuge aus
depth_tuningeinpandasDataFrame mit passenden Spaltennamen.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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=___))