【问题标题】:SFrame manipulation slows down after adding of a new column添加新列后,SFrame 操作速度减慢
【发布时间】:2017-04-27 02:45:27
【问题描述】:

我正在使用 graphlab 和 sframes 在 ipython notebook 中构建重复订单报告。我有一个 csv 文件,其中包含大约 100k 行数据,其中包含 user_iduser_emailuser_phone。我添加了一个名为唯一标识符的新列。对于每一行,我遍历所有其他行以查看 user_iduser_emailuser_phone 是否与当前记录匹配。如果唯一标识符不为空且有匹配项,我将当前记录中的user_id 分配到每个匹配记录的唯一标识符槽中。

最后,我得到一个有 4 列的 SFrame,其中 unique_identifier 包含所有匹配订单的最旧订单的 user_id。我通过带有 lambda 函数的 .apply 方法执行此操作。整个过程在我的笔记本电脑上需要几秒钟。但是,在该过程完成后,SFframe 变得非常缓慢且难以管理,以至于 SFrame.save 似乎永远需要花费。

似乎我添加unique_identifier 的过程阻塞了内存或类似的东西。但是,该问题与帧大小无关。如果我将其限制为 10 行,问题仍然存在。我做错了什么?

这是我的方法

def set_unique_identifier():
  orders['unique_identifier'] = ''
  orders['unique_identifier'] = orders.apply(lambda order:      
       order['unique_identifier'] if order['unique_identifier'] else                                          
       orders[(orders['user_email']==order['user_email']) | 
       (orders['phone'] == order['user_phone'])][0]['user_id'])

【问题讨论】:

    标签: python machine-learning graphlab sframe


    【解决方案1】:

    不要在整个 sframe 上使用 apply,而是在 SArray 上使用它,应该会加快一点

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-07
      • 2014-02-17
      相关资源
      最近更新 更多