开始使用免费开始使用

基于成交量的特征工程

我们将使用非线性模型来获得更准确的预测。在线性模型中,特征必须与目标呈线性相关。其他机器学习模型可以以非线性的方式组合特征。例如,如果当价格的移动平均线上升而成交量的移动平均线下降时,价格会上涨,该如何刻画这种关系?要么将这些特征相乘,要么使用可以处理非线性的机器学习算法(例如随机森林)。

为纳入更多可能与其他特征交互的信息,我们可以加入与目标弱相关的特征。首先,我们会加入成交量数据,它在 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()
编辑并运行代码