Łącząc wszystko w całość
Masz dwie wątpliwości dotyczące swojego potoku w startupie zajmującym się wykrywaniem arytmii:
- Aplikacja była trenowana na pacjentach w różnym wieku, ale korzystają z niej głównie użytkownicy fitness, którzy zazwyczaj są młodzi. Podejrzewasz, że może to być przypadek przesunięcia dziedzinowego (domain shift), dlatego chcesz pominąć wszystkie przykłady dotyczące osób powyżej 50. roku życia.
- Nadal martwisz się o przeuczenie, więc chcesz sprawdzić, czy zmniejszenie złożoności klasyfikatora lasu losowego i selekcja cech mogą w tym pomóc.
Stworzysz potok z krokiem selekcji cech SelectKBest() oraz klasyfikatorem RandomForestClassifier() – oba zostały już zaimportowane. Masz również dostęp do GridSearchCV(), Pipeline, numpy jako np oraz pickle. Dane są dostępne jako arrh.
To ćwiczenie jest częścią kursu
Projektowanie przepływów pracy uczenia maszynowego w Pythonie
Instrukcje do ćwiczenia
- Utwórz potok z
SelectKBest()jako krokiemftorazRandomForestClassifier()jako krokiemclf. - Utwórz siatkę parametrów do strojenia
kwSelectKBest()orazmax_depthwRandomForestClassifier(). - Użyj
GridSearchCV(), aby zoptymalizować potok na podstawie tej siatki i danych zawierających tylko osoby poniżej 50. roku życia. - Zapisz zoptymalizowany potok do pliku pickle w celu wdrożenia na produkcję.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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)