Rekayasa fitur dari volume
Kita akan menggunakan model non-linear untuk membuat prediksi yang lebih akurat. Pada model linear, fitur harus berkorelasi secara linear dengan target. Model Machine Learning lainnya dapat menggabungkan fitur secara non-linear. Misalnya, bagaimana jika harga naik ketika moving average harga naik, dan moving average volume turun? Satu-satunya cara untuk menangkap interaksi tersebut adalah dengan mengalikan fitur, atau menggunakan algoritma Machine Learning yang dapat menangani non-linearitas (misalnya random forests).
Untuk memasukkan lebih banyak informasi yang mungkin berinteraksi dengan fitur lain, kita dapat menambahkan fitur yang berkorelasi lemah. Pertama, kita akan menambahkan data volume, yang kita miliki di lng_df sebagai kolom Adj_Volume.
Sebelum Anda mulai, ingat bahwa untuk fungsi TA-Lib (seperti SMA()), Anda perlu memberikan array Numpy, bukan objek pandas. Anda dapat menggunakan atribut .values dari Series atau DataFrame pandas untuk mengembalikannya sebagai array Numpy.
Latihan ini merupakan bagian dari kursus
Machine Learning untuk Keuangan dengan Python
Instruksi latihan
- Buat persentase perubahan 1 hari pada volume (gunakan
pct_change()dari pandas), dan tetapkan ke kolomAdj_Volume_1d_changedilng_df. - Buat moving average 5 hari dari persentase perubahan 1 hari pada Volume, dan tetapkan ke kolom
Adj_Volume_1d_change_SMAdilng_df. - Plot histogram dari dua fitur baru yang kita buat ini menggunakan daftar
new_features.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
# Create 2 new volume features, 1-day % change and 5-day SMA of the % change
new_features = ['Adj_Volume_1d_change', 'Adj_Volume_1d_change_SMA']
feature_names.extend(new_features)
lng_df[____] = lng_df['Adj_Volume'].____
lng_df[____] = talib.SMA(____[____].____,
timeperiod=____)
# Plot histogram of volume % change data
lng_df[____].plot(kind='hist', sharex=False, bins=50)
plt.show()