Składamy wszystko razem
Właśnie dołączyłeś do startupu zajmującego się wykrywaniem arytmii i chcesz wytrenować model na zbiorze danych arrh. Zauważasz, że lasy losowe wygrywają wiele konkursów na Kaggle, dlatego chcesz je wypróbować z maksymalną głębokością 2, 5 lub 10, używając przeszukiwania siatki hiperparametrów. Zwracasz też uwagę, że wymiarowość zbioru danych jest dość wysoka, więc chcesz zbadać wpływ metody selekcji cech.
Aby uniknąć przypadkowego przeuczenia, dane zostały już podzielone. Do przeszukiwania siatki użyjesz X_train i y_train, a do oceny wpływu selekcji cech – X_test i y_test. Wszystkie cztery podzbiory danych są wczytane do środowiska. Masz też dostęp do GridSearchCV(), train_test_split(), SelectKBest(), chi2() oraz RandomForestClassifier jako rfc.
To ćwiczenie jest częścią kursu
Projektowanie przepływów pracy uczenia maszynowego w Pythonie
Instrukcje do ćwiczenia
- Użyj przeszukiwania siatki, aby przetestować maksymalną głębokość 2, 5 i 10 dla
RandomForestClassifier, a następnie zapisz najlepsze ustawienie parametrów. - Ponownie dopasuj estymator, używając najlepszej liczby estymatorów wyznaczonej powyżej.
- Zastosuj selektor cech
SelectKBestz funkcją oceniającąchi2i ponownie dopasuj klasyfikator.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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(____)