Standardisera data
Vissa modeller, som K-närmaste grannar (KNN) och neurala nätverk, fungerar bättre med skalad data – därför standardiserar vi våra data.
Vi tar också bort mindre viktiga variabler (veckodag) baserat på särdragsviktigheter, genom att indexera feature-DataFrames med .iloc[]. KNN använder avstånd för att hitta liknande datapunkter vid förutsägelser, vilket innebär att stora särdrag annars dominerar över små. Skalning av data löser det problemet.
sklearn:s scale() standardiserar data genom att sätta medelvärdet till 0 och standardavvikelsen till 1. Idealt skulle vi använda StandardScaler med fit_transform() på träningsdata och fit() på testdata, men vi är begränsade till 15 kodrader här.
När vi har skalat datan kontrollerar vi att det fungerade genom att rita histogram över datan.
Den här övningen är en del av kursen
Maskininlärning för finans i Python
Övningsinstruktioner
- Ta bort veckodagssärdragens kolumner från tränings- och testdata med
.iloc(veckodagarna är de sista 4 särdragen). - Standardisera
train_featuresochtest_featuresmed sklearnsscale(); lagra de skalade särdragen somscaled_train_featuresrespektivescaled_test_features. - Rita ett histogram över det 14-dagars glidande medelvärdet för RSI (indexerat med
[:, 2]) från de oskaladetrain_featuresi det första deldiagrammet (ax[0]). - Rita ett histogram över det standardiserade 14-dagars glidande medelvärdet för RSI i det andra deldiagrammet (
ax[1]).
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
from sklearn.preprocessing import scale
# Remove unimportant features (weekdays)
train_features = train_features.iloc[:, :-4]
test_features = test_features.____
# Standardize the train and test features
scaled_train_features = scale(train_features)
scaled_test_features = ____
# Plot histograms of the 14-day SMA RSI before and after scaling
f, ax = plt.subplots(nrows=2, ncols=1)
train_features.iloc[:, 2].hist(ax=____)
ax[1].hist(scaled_train_features[:, 2])
plt.show()