Zacznij terazZacznij za darmo

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

Zobacz kurs

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 multiplier w 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)
Edytuj i uruchom kod