Alles zusammenführen
Du bist gerade zu einem Startup für Arrhythmie-Erkennung gestoßen und willst ein Modell auf dem Arrhythmie-Datensatz arrh trainieren. Du hast beobachtet, dass Random Forests bei Kaggle-Wettbewerben oft sehr gut abschneiden, also möchtest du das mit einer maximalen Tiefe von 2, 5 oder 10 per Grid Search ausprobieren. Außerdem fällt dir auf, dass der Datensatz eine hohe Dimensionalität hat, daher willst du den Effekt einer Merkmalsauswahlmethode berücksichtigen.
Damit du nicht versehentlich überanpasst, hast du deine Daten bereits aufgeteilt. Du verwendest X_train und y_train für die Grid Search und X_test und y_test, um zu entscheiden, ob Merkmalsauswahl hilft. Alle vier Folds des Datensatzes sind in deiner Umgebung vorab geladen. Du hast außerdem Zugriff auf GridSearchCV(), train_test_split(), SelectKBest(), chi2() und RandomForestClassifier als rfc.
Diese Übung ist Teil des Kurses
Machine-Learning-Workflows in Python entwerfen
Anleitung zur Übung
- Verwende Grid Search, um mit einer maximalen Tiefe von 2, 5 und 10 für
RandomForestClassifierzu experimentieren, und speichere die leistungsstärkste Parametereinstellung. - Fitte den Schätzer jetzt erneut mit der oben ermittelten besten Anzahl an Bäumen.
- Wende den Feature-Selektor
SelectKBestmit der Bewertungsfunktionchi2an und fitte den Klassifikator erneut.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Find the best value for max_depth among values 2, 5 and 10
grid_search = GridSearchCV(
____(random_state=1), param_grid=____)
best_value = grid_search.____(
____, ____).best_params_['max_depth']
# Using the best value from above, fit a random forest
clf = rfc(
random_state=1, ____=best_value).____(X_train, y_train)
# Apply SelectKBest with chi2 and pick top 100 features
vt = SelectKBest(____, k=____).____(X_train, y_train)
# Create a new dataset only containing the selected features
X_train_reduced = ____.transform(____)