Стандартизація даних
Деякі моделі, як-от K-nearest neighbors (KNN) і нейронні мережі, краще працюють із масштабованими даними — тому ми стандартизуємо наші дані.
Ми також приберемо неважливі змінні (день тижня) згідно з важливістю ознак, індексуючи датафрейми ознак за допомогою .iloc[]. KNN використовує відстані, щоб знаходити подібні точки для прогнозів, тож ознаки з більшим масштабом переважають над меншими. Масштабування даних це виправляє.
sklearn scale() стандартизує дані, встановлюючи середнє 0 та стандартне відхилення 1. Ідеально було б використати StandardScaler з fit_transform() на тренувальних даних і fit() на тестових, але тут ми обмежені 15 рядками коду.
Після масштабування перевіримо результат, побудувавши гістограми даних.
Ця вправа є частиною курсу
Machine Learning для фінансів у Python
Інструкції до вправи
- Приберіть ознаки дня тижня з тренувальних/тестових ознак за допомогою
.iloc(дні тижня — це останні 4 ознаки). - Стандартизуйте
train_featuresіtest_featuresза допомогоюscale()з sklearn; збережіть масштабовані ознаки якscaled_train_featuresіscaled_test_features. - Побудуйте гістограму 14-денного ковзного середнього RSI (індекс
[:, 2]) з немасштабованихtrain_featuresна першому підграфіку (ax[0]). - Побудуйте гістограму стандартизованого 14-денного ковзного середнього RSI на другому підграфіку (
ax[1]).
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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()