Vše dohromady
Máš dvě obavy ohledně svého pipeline ve startupu zaměřeném na detekci arytmií:
- Aplikace byla trénovaná na pacientech všech věkových kategorií, ale primárně ji používají fitness uživatelé, kteří bývají mladí. Máš podezření, že jde o případ domain shift, a proto chceš vyloučit všechny příklady s věkem nad 50 let.
- Stále tě trápí přetrénování, takže chceš zjistit, zda by pomohlo snížit složitost klasifikátoru random forest a vybrat jen část příznaků.
Vytvoříš pipeline s krokem výběru příznaků SelectKBest() a klasifikátorem RandomForestClassifier(), které jsou již naimportované. Máš také k dispozici GridSearchCV(), Pipeline, numpy jako np a pickle. Data jsou dostupná jako arrh.
Toto cvičení je součástí kurzu
Designing Machine Learning Workflows in Python
Pokyny k cvičení
- Vytvoř pipeline s
SelectKBest()jako krokemftaRandomForestClassifier()jako krokemclf. - Vytvoř mřížku parametrů pro ladění
kvSelectKBest()amax_depthvRandomForestClassifier(). - Použij
GridSearchCV()k optimalizaci pipeline na této mřížce s daty obsahujícími pouze osoby mladší 50 let. - Ulož optimalizovaný pipeline do pickle souboru pro nasazení do produkce.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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)