Standardizace dat
Některé modely, jako K-nearest neighbors (KNN) a neuronové sítě, fungují lépe se škálovanými daty – proto naše data standardizujeme.
Také odstraníme nepodstatné proměnné (den v týdnu) na základě důležitosti příznaků, a to indexováním DataFrame příznaků pomocí .iloc[]. KNN využívá vzdálenosti k hledání podobných bodů pro predikce, takže příznaky s velkými hodnotami přebijí ty s malými. Škálování dat tento problém řeší.
Funkce scale() z knihovny sklearn data standardizuje – nastaví střední hodnotu na 0 a směrodatnou odchylku na 1. V ideálním případě bychom použili StandardScaler s fit_transform() na trénovacích datech a fit() na testovacích, ale zde jsme omezeni na 15 řádků kódu.
Po škálování dat ověříme, že vše proběhlo správně, vykreslením histogramů.
Toto cvičení je součástí kurzu
Machine Learning for Finance in Python
Pokyny k cvičení
- Odstraň příznaky dne v týdnu z trénovacích a testovacích dat pomocí
.iloc(den v týdnu tvoří poslední 4 příznaky). - Standardizuj
train_featuresatest_featurespomocí funkcescale()z knihovny sklearn; škálované příznaky ulož jakoscaled_train_featuresascaled_test_features. - Vykresli histogram 14denního klouzavého průměru RSI (indexovaného jako
[:, 2]) z nešálovanýchtrain_featuresdo prvního podgrafu (ax[0]). - Vykresli histogram standardizovaného 14denního klouzavého průměru RSI do druhého podgrafu (
ax[1]).
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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()