Standaryzacja danych
Niektóre modele, takie jak K najbliższych sąsiadów (KNN) i sieci neuronowe, działają lepiej na przeskalowanych danych – dlatego przeprowadzimy standaryzację.
Usuniemy też nieistotne zmienne (dzień tygodnia) na podstawie ważności cech, indeksując ramki danych cech za pomocą .iloc[]. KNN wyznacza podobne punkty na podstawie odległości, więc cechy o dużych wartościach dominują nad tymi o małych. Skalowanie danych rozwiązuje ten problem.
Funkcja scale() z biblioteki sklearn standaryzuje dane, ustawiając średnią na 0 i odchylenie standardowe na 1. Idealnie byłoby użyć StandardScaler z fit_transform() na danych treningowych i fit() na danych testowych, jednak tutaj jesteśmy ograniczeni do 15 linii kodu.
Po przeskalowaniu danych sprawdzimy, czy operacja się powiodła, wyświetlając histogramy danych.
To ćwiczenie jest częścią kursu
Uczenie maszynowe w finansach z Pythonem
Instrukcje do ćwiczenia
- Usuń cechy oznaczające dzień tygodnia ze zbioru cech treningowych i testowych, używając
.iloc(cechy dnia tygodnia to ostatnie 4 kolumny). - Wystandaryzuj
train_featuresitest_featuresza pomocą funkcjiscale()z biblioteki sklearn; zapisz przeskalowane cechy jakoscaled_train_featuresiscaled_test_features. - Na pierwszym wykresie (
ax[0]) narysuj histogram 14-dniowej średniej kroczącej RSI (indeksowanej jako[:, 2]) z niezskalowanego zbiorutrain_features. - Na drugim wykresie (
ax[1]) narysuj histogram wystandaryzowanej 14-dniowej średniej kroczącej RSI.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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()