Standardizarea datelor
Unele modele, precum K-nearest neighbors (KNN) și rețelele neuronale, funcționează mai bine cu date scalate – așadar, vom standardiza datele noastre.
Vom elimina și variabilele neimportante (ziua din săptămână), conform importanței caracteristicilor, indexând DataFrame-urile de caracteristici cu .iloc[]. KNN folosește distanțe pentru a găsi puncte similare în vederea predicțiilor, deci caracteristicile cu valori mari le domină pe cele cu valori mici. Scalarea datelor rezolvă această problemă.
Funcția scale() din sklearn va standardiza datele, setând media la 0 și deviația standard la 1. În mod ideal, am folosi StandardScaler cu fit_transform() pe datele de antrenament și fit() pe datele de testare, dar suntem limitați la 15 linii de cod aici.
După ce scalăm datele, vom verifica dacă procesul a funcționat corect, reprezentând grafic histogramele datelor.
Acest exercițiu face parte din cursul
Machine Learning pentru finanțe în Python
Instrucțiuni pentru exercițiu
- Elimină caracteristicile corespunzătoare zilei din săptămână din seturile de caracteristici de antrenament/testare folosind
.iloc(ziua din săptămână corespunde ultimelor 4 caracteristici). - Standardizează
train_featuresșitest_featurescu funcțiascale()din sklearn; stochează caracteristicile scalate cascaled_train_featuresșiscaled_test_features. - Trasează o histogramă a mediei mobile RSI pe 14 zile (indexată la
[:, 2]) dintrain_featuresnescalate, pe primul subplot (ax[0]). - Trasează o histogramă a mediei mobile RSI pe 14 zile standardizate pe al doilea subplot (
ax[1]).
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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()