Standarisasi data
Beberapa model, seperti K-nearest neighbors (KNN) dan neural networks, bekerja lebih baik dengan data yang ditata skala—jadi kita akan menstandarkan data.
Kita juga akan menghapus variabel yang kurang penting (hari dalam minggu) berdasarkan feature importances, dengan mengindeks DataFrame fitur menggunakan .iloc[]. KNN menggunakan jarak untuk menemukan titik serupa saat membuat prediksi, sehingga fitur berskala besar akan mendominasi fitur berskala kecil. Menata skala data mengatasi hal tersebut.
scale() dari sklearn akan menstandarkan data, yakni menetapkan mean menjadi 0 dan standar deviasi menjadi 1. Idealnya kita akan menggunakan StandardScaler dengan fit_transform() pada data latih, dan fit() pada data uji, tetapi di sini kita dibatasi hingga 15 baris kode.
Setelah data ditata skala, kita akan memeriksa keberhasilannya dengan memplot histogram data.
Latihan ini merupakan bagian dari kursus
Machine Learning untuk Keuangan dengan Python
Instruksi latihan
- Hapus fitur hari dalam minggu dari fitur train/test menggunakan
.iloc(hari dalam minggu adalah 4 fitur terakhir). - Standarkan
train_featuresdantest_featuresmenggunakanscale()dari sklearn; simpan fitur terstandar sebagaiscaled_train_featuresdanscaled_test_features. - Plot histogram rata-rata bergerak RSI 14 hari (diindeks pada
[:, 2]) daritrain_featuresyang belum ditata skala pada subplot pertama (ax[0]). - Plot histogram rata-rata bergerak RSI 14 hari yang telah distandarkan pada subplot kedua (
ax[1]).
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
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()