Собираем всё вместе
Вы только что присоединились к стартапу по обнаружению аритмии и хотите обучить модель на наборе данных arrh. Вы заметили, что случайные леса нередко побеждают на соревнованиях Kaggle, поэтому решили попробовать этот подход с максимальной глубиной 2, 5 или 10, используя поиск по сетке. Кроме того, размерность набора данных оказалась довольно высокой, поэтому вы хотите оценить влияние метода отбора признаков.
Чтобы избежать случайного переобучения, вы заранее разделили данные. Для поиска по сетке будут использоваться X_train и y_train, а X_test и y_test помогут определить, даёт ли отбор признаков улучшение. Все четыре части набора данных уже загружены в вашу среду. Вам также доступны GridSearchCV(), train_test_split(), SelectKBest(), chi2() и RandomForestClassifier под именем rfc.
Это упражнение является частью курса
Проектирование рабочих процессов машинного обучения на Python
Инструкции к упражнению
- Воспользуйтесь поиском по сетке, чтобы проверить значения максимальной глубины 2, 5 и 10 для
RandomForestClassifier, и сохраните наилучшую найденную конфигурацию параметров. - Заново обучите оценщик, используя наилучшее число деревьев, полученное на предыдущем шаге.
- Примените селектор признаков
SelectKBestс функцией оценкиchi2и повторно обучите классификатор.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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(____)