Aangepaste function transformers in pipelines
Je hebt op een gegeven moment gehoord dat de sensoren mogelijk slechter presteren bij obese personen. Eerder pakte je dat aan met wegingen, maar nu denk je dat deze informatie ook handig kan zijn voor feature engineering. Daarom besluit je het geregistreerde gewicht van een persoon te vervangen door een indicator of iemand obees is. Je wilt dit met pipelines doen. Je hebt numpy als np beschikbaar, RandomForestClassifier(), FunctionTransformer() en GridSearchCV().
Deze oefening maakt deel uit van de cursus
Machine Learning-workflows ontwerpen in Python
Oefeninstructies
- Definieer een aangepaste feature-extractor. Dit is een functie die een aangepaste kopie van de invoer teruggeeft.
- Vervang elke waarde in de eerste kolom door een indicator of die waarde boven een drempel ligt, gegeven door een veelvoud van het kolomgemiddelde.
- Zet de bovenstaande feature-extractor om naar een transformer en plaats deze in een pipeline samen met een random forest-classifier.
- Gebruik grid search CV om de waarden 1, 2 en 3 te proberen voor de vermenigvuldigingsconstante
multiplierin je feature-extractor.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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)