Alles samenbrengen
Je bent net begonnen bij een startup voor aritmie-detectie en wilt een model trainen op de aritmiegegevensset arrh. Je merkt dat random forests vaak goed scoren in Kaggle-wedstrijden, dus je wilt dat uitproberen met een maximale diepte van 2, 5 of 10 via een grid search. Je ziet ook dat de dimensie van de gegevensset vrij hoog is, dus je wilt het effect van een methode voor featureselectie overwegen.
Om te zorgen dat je niet per ongeluk overfit, heb je je data al gesplitst. Je gebruikt X_train en y_train voor de grid search, en X_test en y_test om te bepalen of featureselectie helpt. Alle vier de folds van de gegevensset zijn al voor je geladen. Je hebt ook toegang tot GridSearchCV(), train_test_split(), SelectKBest(), chi2() en RandomForestClassifier als rfc.
Deze oefening maakt deel uit van de cursus
Machine Learning-workflows ontwerpen in Python
Oefeninstructies
- Gebruik grid search om te experimenteren met een maximale diepte van 2, 5 en 10 voor
RandomForestClassifieren sla de best presterende parameterinstelling op. - Refit nu de estimator met het best presterende aantal bomen zoals hierboven bepaald.
- Pas de
SelectKBest-featureselector toe met dechi2-scorefunctie en fit de classifier opnieuw.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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(____)