Ottimizzare la dimensione della finestra
Vuoi verificare di persona che la dimensione ottimale della finestra per l’insieme di dati di aritmia sia 50. Ti è stato fornito l’insieme di dati come data frame pandas chiamato arrh, e vuoi usare un sottoinsieme dei dati fino al tempo t_now. I tuoi dati di test sono disponibili come X_test, y_test. Proverai diverse dimensioni di finestra, da 10 a 100, adatterai (fit) un classificatore naive Bayes a ciascuna finestra, valuterai il suo F1 score sui dati di test e poi sceglierai la dimensione di finestra con le prestazioni migliori. Hai anche numpy disponibile come np, e la funzione f1_score() è già stata importata. Infine, è stata inizializzata per te una lista vuota chiamata accuracies per memorizzare le accuratezze delle finestre.
Questo esercizio fa parte del corso
Progettare workflow di Machine Learning in Python
Istruzioni dell'esercizio
- Definisci l’indice di una finestra mobile di dimensione
w_sizeche si ferma at_nowusando il metodo.loc(). - Costruisci
Xdalla finestra mobile rimuovendo la colonnaclass. Memorizza quest’ultima colonna comey. - Esegui il fit di un classificatore naive Bayes su
Xey, e usalo per prevedere le etichette dei dati di testX_test. - Calcola l’F1 score di queste previsioni per ciascuna dimensione di finestra e trova la dimensione di finestra con le prestazioni migliori.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Loop over window sizes
for w_size in wrange:
# Define sliding window
sliding = arrh.____[____:t_now]
# Extract X and y from the sliding window
X, y = sliding.____('class', ____), sliding[____]
# Fit the classifier and store the F1 score
preds = GaussianNB().fit(____, ____).____(X_test)
accuracies.append(____(____, ____))
# Estimate the best performing window size
optimal_window = ____[np.____(accuracies)]