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
<Kurs>Machine Learning für Marketing mit Python</Kurs>Übungsanweisungen
- 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 praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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=___))