我想创建一个np.ndarray
作为机器学习模型的输入:
array_X = np.array([list(w.values) for w in df[['close', 'volume']].rolling(window=20)][19:-1])
字符串
这是时间序列中的标准方法,我们使用过去值的窗口作为输入来预测未来值。阵列的形状为2 * 20 * 20000000
。这将花费大量的时间来构建这样的数组,有时会有一个错误,由数组消耗的内存太大。
有什么方法可以改善上述问题(时间成本和内存错误)?
1条答案
按热度按时间kognpnkq1#
你的原始代码给了我一个错误,因为数组中前几个条目的维度不匹配,这些条目太短了,因为窗口还没有满,所以我修改了它,以丢弃第一个值:
字符串
pd.DataFrame.rolling
对于这些类型的操作可能非常慢。shift
在pandas
中非常有效,下面是window_size=3
的示例:型
我们将移位叠加,然后重新塑造值。
将其推广到变量
window_size
,我们得到:型
shift
的性能比rolling
高出近两个数量级:的数据
在我的MacBook上,它可以很好地扩展到数亿行:
的
型
分析代码:
型