Niestandardowe transformatory funkcyjne w potokach
Otrzymałeś informację, że czujniki mogą działać gorzej w przypadku osób z otyłością. Wcześniej rozwiązywałeś ten problem za pomocą wag, ale teraz uznałeś, że ta informacja może się przydać również do inżynierii cech. Postanawiasz zastąpić zapisaną wagę osoby wskaźnikiem określającym, czy dana osoba ma otyłość. Chcesz to zrobić z wykorzystaniem potoków. Do dyspozycji masz numpy jako np, RandomForestClassifier(), FunctionTransformer() oraz GridSearchCV().
To ćwiczenie jest częścią kursu
Projektowanie przepływów pracy uczenia maszynowego w Pythonie
Instrukcje do ćwiczenia
- Zdefiniuj niestandardowy ekstraktor cech – funkcję, która zwróci zmodyfikowaną kopię swoich danych wejściowych.
- Zastąp każdą wartość pierwszej kolumny wskaźnikiem określającym, czy ta wartość przekracza próg wyznaczony przez wielokrotność średniej tej kolumny.
- Przekształć powyższy ekstraktor cech w transformer i umieść go w potoku razem z klasyfikatorem lasów losowych.
- Użyj przeszukiwania siatką (grid search CV), aby przetestować wartości 1, 2 i 3 dla stałej mnożnika
multiplierw swoim ekstraktorze cech.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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)