Walidacja krzyżowa z tasowaniem
Walidacja krzyżowa polega na wielokrotnym dzieleniu danych na zbiory treningowe i testowe – za każdym razem wybierasz inny podział. W tym ćwiczeniu przeprowadzisz klasyczną walidację krzyżową ShuffleSplit na danych o wartości spółek z poprzednich lekcji. Później omówimy, jakie zmiany są potrzebne w przypadku danych szeregów czasowych. Dane, których użyjesz, to te same historyczne dane cenowe kilku dużych spółek.
W środowisku pracy masz dostęp do instancji obiektu regresji liniowej (model) oraz funkcji r2_score() do oceny modelu. Dane są przechowywane w tablicach X i y. Udostępniliśmy też funkcję pomocniczą (visualize_predictions()), która pozwala zwizualizować wyniki.
To ćwiczenie jest częścią kursu
Uczenie maszynowe dla danych szeregów czasowych w Pythonie
Instrukcje do ćwiczenia
- Zainicjalizuj obiekt walidacji krzyżowej ShuffleSplit z 10 podziałami.
- Iteruj po podziałach CV przy użyciu tego obiektu. W każdej iteracji:
- Dopasuj model, korzystając z indeksów treningowych.
- Wygeneruj prognozy na podstawie indeksów testowych, oceń model (\(R^2\)) przy użyciu prognoz i zapisz wyniki.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Import ShuffleSplit and create the cross-validation object
from sklearn.model_selection import ShuffleSplit
cv = ____(____, random_state=1)
# Iterate through CV splits
results = []
for tr, tt in cv.____(X, y):
# Fit the model on training data
____(X[tr], y[tr])
# Generate predictions on the test data, score the predictions, and collect
prediction = ____(X[tt])
score = r2_score(____, ____)
results.append((prediction, score, tt))
# Custom function to quickly visualize predictions
visualize_predictions(results)