LoslegenKostenlos loslegen

Eigene FunctionTransformer in Pipelines

Dir wurde mitgeteilt, dass die Sensoren bei adipösen Personen möglicherweise schlecht funktionieren. Zuvor hast du das über Gewichte berücksichtigt, aber jetzt denkst du, dass diese Information auch für Feature Engineering nützlich sein könnte. Daher entscheidest du dich, das aufgezeichnete Gewicht einer Person durch einen Indikator zu ersetzen, der angibt, ob sie adipös ist. Du möchtest das mit Pipelines umsetzen. Dir stehen numpy als np, RandomForestClassifier(), FunctionTransformer() und GridSearchCV() zur Verfügung.

Diese Übung ist Teil des Kurses

Machine-Learning-Workflows in Python entwerfen

Kurs anzeigen

Anleitung zur Übung

  • Definiere einen eigenen Feature-Extractor. Das ist eine Funktion, die eine veränderte Kopie ihrer Eingabe ausgibt.
  • Ersetze jeden Wert der ersten Spalte durch einen Indikator dafür, ob dieser Wert über einem Schwellwert liegt, der durch ein Vielfaches des Spaltenmittels gegeben ist.
  • Wandle den obigen Feature-Extractor in einen Transformer um und füge ihn zusammen mit einem Random-Forest-Klassifikator in eine Pipeline ein.
  • Verwende Grid-Search-CV, um die Werte 1, 2 und 3 für die Multiplikationskonstante multiplier in deinem Feature-Extractor auszuprobieren.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# 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)
Code bearbeiten und ausführen