Train- en testfeatures maken
Voordat we ons lineaire model fitten, willen we een constante aan onze features toevoegen, zodat ons lineaire model een intercept heeft.
We willen ook train- en testfeatures maken. Zo kunnen we ons model fitten op de traininggegevensset en de prestaties beoordelen op de testgegevensset. We willen prestaties altijd controleren op data die het model nog niet heeft gezien, om te zorgen dat we niet overfitten—oftewel, patronen in de trainingsdata te exact uit het hoofd leren.
Bij een tijdreeks als deze willen we meestal de oudste data gebruiken als trainingset en de nieuwste data als testset. Zo kunnen we de prestaties van het model evalueren op de meest recente data, wat realistischer voorspellingen simuleert op data die we nog niet hebben gezien.
Deze oefening maakt deel uit van de cursus
Machine Learning voor finance in Python
Oefeninstructies
- Importeer de bibliotheek
statsmodels.apimet de aliassm. - Voeg een constante toe aan de variabele
featuresmet de.add_constant()-functie van statsmodels. - Stel
train_sizein op 85% van het totale aantal datapunten (aantal rijen) met de eigenschap.shape[0]vanfeaturesoftargets. - Splits
linear_featuresentargetsop in train- en testsets mettrain_sizeen Python-indexering (bijv.[start:stop]).
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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)