Transformatoare cu funcții personalizate în pipeline-uri
La un moment dat, ai aflat că senzorii ar putea funcționa mai slab în cazul persoanelor obeze. Anterior, ai rezolvat această problemă folosind ponderi, dar acum te gândești că această informație ar putea fi utilă și pentru ingineria caracteristicilor — așa că decizi să înlocuiești greutatea înregistrată a unei persoane cu un indicator care arată dacă aceasta este obeză. Vrei să faci acest lucru folosind pipeline-uri. Ai la dispoziție numpy ca np, RandomForestClassifier(), FunctionTransformer() și GridSearchCV().
Acest exercițiu face parte din cursul
Proiectarea fluxurilor de lucru pentru Machine Learning în Python
Instrucțiuni pentru exercițiu
- Definește un extractor de caracteristici personalizat. Acesta este o funcție care va returna o copie modificată a intrării sale.
- Înlocuiește fiecare valoare din prima coloană cu indicatorul care arată dacă acea valoare depășește un prag dat de un multiplu al mediei coloanei.
- Convertește extractorul de caracteristici de mai sus într-un transformator și plasează-l într-un pipeline împreună cu un clasificator de tip random forest.
- Folosește grid search CV pentru a testa valorile 1, 2 și 3 pentru constanta de multiplicare
multiplierdin extractorul tău de caracteristici.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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)