基于成交量的特征工程
我们将使用非线性模型来获得更准确的预测。在线性模型中,特征必须与目标呈线性相关。其他机器学习模型可以以非线性的方式组合特征。例如,如果当价格的移动平均线上升而成交量的移动平均线下降时,价格会上涨,该如何刻画这种关系?要么将这些特征相乘,要么使用可以处理非线性的机器学习算法(例如随机森林)。
为纳入更多可能与其他特征交互的信息,我们可以加入与目标弱相关的特征。首先,我们会加入成交量数据,它在 lng_df 中的列名为 Adj_Volume。
在开始之前,请记住,对于 TA-Lib 函数(例如 SMA()),您需要提供 Numpy 数组,而不是 pandas 对象。您可以使用 pandas Series 或 DataFrame 的 .values 属性将其转换为 Numpy 数组。
本练习是课程的一部分
Python 金融机器学习
练习说明
- 计算成交量的 1 天百分比变化(使用 pandas 的
pct_change()),并将其赋给lng_df中的Adj_Volume_1d_change列。 - 计算上述 1 天百分比变化的 5 天移动平均,并将其赋给
lng_df中的Adj_Volume_1d_change_SMA列。 - 使用
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()