Zacznij terazZacznij za darmo

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

Zobacz kurs

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_features i test_features za pomocą funkcji scale() z biblioteki sklearn; zapisz przeskalowane cechy jako scaled_train_features i scaled_test_features.
  • Na pierwszym wykresie (ax[0]) narysuj histogram 14-dniowej średniej kroczącej RSI (indeksowanej jako [:, 2]) z niezskalowanego zbioru train_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()
Edytuj i uruchom kod