首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >预处理时序

预处理时序
EN

Data Science用户
提问于 2020-02-27 11:07:49
回答 1查看 70关注 0票数 3

我有一个很长的事件列表(400个独特的事件,序列~10米长)。我想训练一个RNN来预测下一个事件。

我采取的预处理步骤是:(1)使用熊猫转到OneHotEncoding上:

代码语言:javascript
复制
vector = pd.get_dummies(sr)

这个部分大约需要15秒。

(2)使用10的滑动窗口,创建如下样本和标签:迭代(1)中的向量,以Xt作为标号,Xt:t-10作为数据。

代码:

代码语言:javascript
复制
X = np.zeros((len(samples), window_size, voc_len), dtype=np.bool)
y = np.zeros((len(samples), voc_len), dtype=np.bool)

if IN_COLAB:
  loading_bar = tqdm.tqdm_notebook(enumerate(samples),desc='Build dataset',total=len(samples))
else:
  loading_bar = tqdm.tqdm(enumerate(samples),desc='Build dataset',total=len(samples))

for numpy_index, pandas_idx in loading_bar:
  x_idx = (pandas_idx, pandas_idx + window_size)
  y_idx = pandas_idx + window_size
  Xt = vector.iloc[x_idx[0]:x_idx[1]]
  yt = vector.iloc[y_idx]
  X[numpy_index] = Xt
  y[numpy_index] = yt

display(yt)

问题是秒部分非常慢(25分钟)。有更好的方法吗?某种内置的功能?

Thx

EN

回答 1

Data Science用户

发布于 2021-02-15 14:55:18

有几种设计模式会导致缓慢的代码:

  1. 熊猫不是为大规模、快速的数据处理而设计的。
  2. 您的代码使用的是一个for循环,这个循环可能很慢。
  3. 在程序需要之前,你正在显示滑动窗口。最好是在数据上创建一个视图,然后仅在培训需要时才在内存中显示数据。

最好将NumPy与numpy.lib.stride_tricks.sliding_window_view结合使用。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/68796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档