Собираем всё вместе
У вас есть два опасения относительно вашего пайплайна в стартапе по обнаружению аритмии:
- Приложение обучалось на пациентах всех возрастов, однако в основном им пользуются люди, следящие за здоровьем, — как правило, молодые. Возможно, это случай доменного сдвига, поэтому вы хотите исключить из рассмотрения все примеры с возрастом старше 50 лет.
- Вас по-прежнему беспокоит переобучение, поэтому вы хотите проверить, поможет ли снижение сложности классификатора случайного леса и отбор признаков.
Вы создадите пайплайн с шагом отбора признаков SelectKBest() и классификатором RandomForestClassifier() — оба уже импортированы. Также вам доступны GridSearchCV(), Pipeline, numpy как np и pickle. Данные доступны в переменной arrh.
Это упражнение является частью курса
Проектирование рабочих процессов машинного обучения на Python
Инструкции к упражнению
- Создайте пайплайн, в котором
SelectKBest()— шагft, аRandomForestClassifier()— шагclf. - Создайте сетку параметров для настройки
kвSelectKBest()иmax_depthвRandomForestClassifier(). - Используйте
GridSearchCV(), чтобы оптимизировать пайплайн на основе этой сетки и данных, включающих только пациентов моложе 50 лет. - Сохраните оптимизированный пайплайн в файл pickle для использования в производственной среде.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Create a pipeline
pipe = Pipeline([
('ft', ____), ('clf', ____(random_state=2))])
# Create a parameter grid
grid = {'ft__k':[5, 10], '____':[10, 20]}
# Execute grid search CV on a dataset containing under 50s
grid_search = ____(pipe, param_grid=grid)
arrh = arrh.____[____(arrh['age'] < 50)]
____.____(arrh.drop('class', 1), arrh['class'])
# Push the fitted pipeline to production
with ____('pipe.pkl', ____) as file:
pickle.dump(____, file)