Skapa tränings- och testegenskaper
Innan vi anpassar vår linjära modell vill vi lägga till en konstant i våra särdrag, så att modellen får ett intercept.
Vi vill också dela upp särdragen i tränings- och testset. Det gör att vi kan anpassa modellen på träningsdatan och sedan utvärdera prestandan på testdatan. Det är alltid viktigt att kontrollera prestandan på data som modellen inte har sett tidigare – annars riskerar vi överanpassning, det vill säga att modellen memorerar mönster i träningsdatan alltför exakt.
Med en tidsserie som denna vill vi vanligtvis använda den äldsta datan som träningsset och den nyaste som testset. På så sätt utvärderar vi modellens prestanda på den mest aktuella datan, vilket ger en mer realistisk bild av hur modellen presterar på osedd data.
Den här övningen är en del av kursen
Maskininlärning för finans i Python
Övningsinstruktioner
- Importera biblioteket
statsmodels.apimed aliasetsm. - Lägg till en konstant i variabeln
featuresmed hjälp av statsmodels funktion.add_constant(). - Sätt
train_sizetill 85 % av det totala antalet datapunkter (antal rader) med hjälp av egenskapen.shape[0]förfeaturesellertargets. - Dela upp
linear_featuresochtargetsi tränings- och testset med hjälp avtrain_sizeoch Pythons indexering (t.ex.[start:stop]).
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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)