Tworzenie cech treningowych i testowych
Zanim dopasujemy nasz model liniowy, dodamy stałą do cech – dzięki temu model będzie miał wyraz wolny.
Chcemy też podzielić dane na zbiór treningowy i testowy. Pozwoli nam to dopasować model do zbioru treningowego i ocenić jego wydajność na zbiorze testowym. Zawsze warto sprawdzać wyniki na danych, których model wcześniej nie widział – w ten sposób upewniamy się, że model nie jest przetrenowany, czyli że nie zapamiętał wzorców ze zbioru treningowego zbyt dosłownie.
W przypadku szeregów czasowych zwykle korzystamy z najstarszych danych jako zbioru treningowego, a z najnowszych – jako testowego. Dzięki temu możemy ocenić działanie modelu na najświeższych danych, co lepiej odzwierciedla realne prognozy na danych, których jeszcze nie widzieliśmy.
To ćwiczenie jest częścią kursu
Uczenie maszynowe w finansach z Pythonem
Instrukcje do ćwiczenia
- Zaimportuj bibliotekę
statsmodels.apiz aliasemsm. - Dodaj stałą do zmiennej
features, korzystając z funkcji.add_constant()dostępnej w statsmodels. - Ustaw
train_sizejako 85% łącznej liczby punktów danych (liczby wierszy), używając właściwości.shape[0]zmiennejfeatureslubtargets. - Podziel
linear_featuresitargetsna zbiory treningowy i testowy, używająctrain_sizeoraz indeksowania w Pythonie (np.[start:stop]).
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Import the statsmodels.api library with the alias sm
___
# Add a constant to the features
linear_features = sm.____(features)
# Create a size for the training set that is 85% of the total number of samples
train_size = int(0.85 * ____)
train_features = linear_features[:train_size]
train_targets = targets[____]
test_features = linear_features[train_size:]
test_targets = targets[train_size:]
print(linear_features.shape, train_features.shape, test_features.shape)