我有一个日期框架,其中的列如下所示:
0 [ [ 1051, 0, 10181, 62, 17, ...
1 [ [ 882, 0, 9909, 59, 23, 9...
2 [ [ 1061, 0, 10192, 60, 17, ...
3 [ [ 122, 4, 501, 2, 8, 3, ...
4 [ [ 397, 1, 859, 9, 8, 5, ...
5 [ [ 1213, 1, 10791, 23, 17, ...
6 [ [ 1395, 3, 11147, 0, 17, ...
7 [ [ 757, 3, 1900, 34, 23, 8...
8 [ [ 129, 0, 507, 10, 8, 3, ...
9 [ [ 1438, 0, 11177, 26, 2, ...
10 [ [ 1272, 1, 10901, 7, 17, ...
具有较少功能的示例行将如下所示:
[[1,2,3,4],[2,3,4,5],[3,4,5,6]]
数据类型是一个字符串,因此必须使用json.loads
将它们转换为[N_TIMESTAMPS,N_FEATURES]的数组,其中每个功能都是一个数值。
为了使用此数据作为神经网络的输入,我必须将此列转换为以下形状的numpy数组:[N_SAMPLES,N_TIMESTAMPS,N_FEATURES]。因此,像这样:
[[[1,2,3,4],[2,3,4,5],[3,4,5,6]],[[1,2,3,4],[2,3,4,5],[3,4,5,6]]]
这就是我现在的做法:
train_x = np.array(
df.time_stream.apply(json.loads).apply(np.array).apply(
lambda x: x.reshape(N_TIMESTAMPS,N_FEATURES).tolist()).values.tolist()
)
对于具有268,521行的数据集,此计算需要12.5分钟。并不理想,但确实可行。但是,它不可扩展。对于具有756,961行的新数据集,它永远不会完成(N_TIMESTAMPS = 100; N_FEATURES = 54),因为它耗尽了所有RAM,并且计算机崩溃了。
我正在寻找有关如何使其更快或更有效地使用内存的建议。一个问题是正在使用大量交换。