Створення ознак на основі обсягу
Ми будемо використовувати нелінійні моделі, щоб робити точніші прогнози. У лінійних моделях ознаки мають бути лінійно корельовані з цільовою змінною. Інші алгоритми машинного навчання можуть поєднувати ознаки нелінійно. Наприклад, що як ціна зростає, коли середнє ковзне ціни зростає, а середнє ковзне обсягу зменшується? Єдиний спосіб врахувати такі взаємодії — або перемножити ознаки, або використати алгоритм машинного навчання, що вміє працювати з нелінійністю (наприклад, random forests).
Щоб додати більше інформації, яка може взаємодіяти з іншими ознаками, ми можемо включити слабко корельовані ознаки. Спершу додамо дані про обсяг, які є в lng_df у стовпці Adj_Volume.
Перш ніж почати, пам'ятайте: для функцій TA-Lib (таких як SMA()) потрібно передавати масиви Numpy, а не об'єкти pandas. Ви можете використати атрибут .values у Series або DataFrame бібліотеки pandas, щоб отримати масив Numpy.
Ця вправа є частиною курсу
Machine Learning для фінансів у Python
Інструкції до вправи
- Створіть 1-денну відсоткову зміну обсягу (використайте
pct_change()з pandas) і запишіть її в стовпецьAdj_Volume_1d_changeуlng_df. - Створіть 5-денне ковзне середнє 1-денної відсоткової зміни обсягу та запишіть його в стовпець
Adj_Volume_1d_change_SMAуlng_df. - Побудуйте гістограми цих двох нових ознак за допомогою списку
new_features.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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()