Zacznij terazZacznij za darmo

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

Zobacz kurs

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)
Edytuj i uruchom kod