Mettiamo tutto insieme
Ti sei appena unito a una startup che rileva le aritmie e vuoi addestrare un modello sull’insieme di dati delle aritmie arrh. Hai notato che le random forest vincono spesso diverse competizioni su Kaggle, quindi vuoi provarle con una profondità massima di 2, 5 o 10, usando una grid search. Inoltre, osservi che la dimensionalità dell’insieme di dati è piuttosto alta e vuoi valutare l’effetto di un metodo di selezione delle caratteristiche.
Per assicurarti di non fare overfitting per errore, hai già suddiviso i dati. Userai X_train e y_train per la grid search, e X_test e y_test per decidere se la selezione delle caratteristiche aiuta. Tutti e quattro i fold dell’insieme di dati sono già precaricati nel tuo ambiente. Hai anche accesso a GridSearchCV(), train_test_split(), SelectKBest(), chi2() e RandomForestClassifier come rfc.
Questo esercizio fa parte del corso
Progettare workflow di Machine Learning in Python
Istruzioni dell'esercizio
- Usa una grid search per provare una profondità massima di 2, 5 e 10 per
RandomForestClassifiere salva l’impostazione di parametro con le prestazioni migliori. - Ora ri-adatta l’estimatore usando il numero di stimatori migliore individuato sopra.
- Applica il selettore di caratteristiche
SelectKBestcon la funzione di scoringchi2e ri-addestra il classificatore.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Find the best value for max_depth among values 2, 5 and 10
grid_search = GridSearchCV(
____(random_state=1), param_grid=____)
best_value = grid_search.____(
____, ____).best_params_['max_depth']
# Using the best value from above, fit a random forest
clf = rfc(
random_state=1, ____=best_value).____(X_train, y_train)
# Apply SelectKBest with chi2 and pick top 100 features
vt = SelectKBest(____, k=____).____(X_train, y_train)
# Create a new dataset only containing the selected features
X_train_reduced = ____.transform(____)