关于Project1的问题 agg(OrderedDict())的使用

老师有两个关于project1的问题:

  1. project1有很多groupby后aggregation用OrderedDict,例如:agg(OrderedDict([(‘user_id’,‘nunique’)])。请问下这样用的好处是什么?这是个数据处理常用的形式吗?什么情况下该使用?
  2. 这个project里prior和train的data是已经给了,别人帮截断好了。实际工作中如何确定按哪个时间节点去截断做prior data和train data是DS自己决定吗?一般有什么经验可以确定如何切数据,时间段为多久?
  1. 在pandas中做groupby aggregation可以每一行单独做。在这里我们是把多个aggregation操作整合到一起了,这样看起来逻辑更加清晰,便于code review。我们这里用OrderedDict 可以保持dictionary里面数据的顺序,因为普通的dictionary是不保序的。我们这样做也是为了之后便于管理feature,否则每次运行程序的时候feature在dataframe里面的column位置都不一样。
  2. 是的。时间点完全由DS/Eng自己决定,只要保证training和validation data都有足够的数量就可以。为了model validation的有效性,我们自己切数据的时候需要确保不要有data leakage。因此只要保证training dataset全都发生在validation dataset之前就行了。这部分咱们在课上给大家介绍过,对于时序数据,为了避免data leakage,就不做经典的cross validation了。