ПочатиПочніть безкоштовно

Стандартизація даних

Деякі моделі, як-от 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()
Редагувати та запускати код