Vlastní funkce jako transformátory v pipeline
Dozvěděl/a ses, že senzory mohou podávat horší výsledky u obézních jedinců. Dříve jsi to řešil/a pomocí vah, ale teď tě napadlo, že by tato informace mohla být užitečná i pro feature engineering – proto se rozhodneš nahradit naměřenou hmotnost jedince indikátorem toho, zda jde o obézní osobu. Chceš to udělat pomocí pipeline. K dispozici máš numpy jako np, RandomForestClassifier(), FunctionTransformer() a GridSearchCV().
Toto cvičení je součástí kurzu
Designing Machine Learning Workflows in Python
Pokyny k cvičení
- Definuj vlastní feature extraktor – funkci, která vrátí upravenou kopii svého vstupu.
- Nahraď každou hodnotu prvního sloupce indikátorem toho, zda je daná hodnota nad prahem definovaným jako násobek průměru tohoto sloupce.
- Převeď feature extraktor na transformátor a vlož ho do pipeline spolu s klasifikátorem random forest.
- Pomocí grid search CV vyzkoušej hodnoty 1, 2 a 3 pro multiplikační konstantu
multiplierve svém feature extraktoru.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# Define a feature extractor to flag very large values
def more_than_average(X, multiplier=1.0):
Z = ____
Z[:,1] = ____ > multiplier*np.mean(Z[:,1])
return Z
# Convert your function so that it can be used in a pipeline
pipe = Pipeline([
('ft', ____(____)),
('clf', RandomForestClassifier(random_state=2))])
# Optimize the parameter multiplier using GridSearchCV
params = ____
grid_search = GridSearchCV(pipe, param_grid=params)