De venstergrootte afstemmen
Je wilt zelf controleren dat de optimale venstergrootte voor de aritmiegegevensset 50 is. Je hebt de gegevensset gekregen als een pandas-dataframe met de naam arrh, en je wilt een subset van de data gebruiken tot en met tijdstip t_now. Je testdata is beschikbaar als X_test, y_test. Je probeert meerdere venstergroottes uit, van 10 tot 100, traint voor elk venster een naive Bayes-classifier, beoordeelt de F1-score op de testdata en kiest vervolgens de best presterende venstergrootte. Je hebt ook numpy beschikbaar als np, en de functie f1_score() is al geïmporteerd. Tot slot is er een lege lijst accuracies voor je geïnitialiseerd om de accuracies van de vensters in op te slaan.
Deze oefening maakt deel uit van de cursus
Machine Learning-workflows ontwerpen in Python
Oefeninstructies
- Definieer de index van een schuivend venster van grootte
w_sizedat eindigt bijt_nowmet de methode.loc(). - Stel
Xsamen vanuit het schuivende venster door de kolomclasste verwijderen. Sla die kolom apart op alsy. - Train een naive Bayes-classifier op
Xeny, en gebruik deze om de labels van de testdataX_testte voorspellen. - Bereken de F1-score van deze voorspellingen voor elke venstergrootte en bepaal de best presterende venstergrootte.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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)]