[Techie Project 1] Test set standardization, Pipeline 自定函数

Jason 老师,
关于project 1我有三个问题,
1,根据问题,是否复购以train set的时间为准, 那么直接用train set的reorder 作为label 行不行? 我做了value count,和sample code 做的label数是一样的
2,课上提到,我们应该用 train dataset 的 scaler去 fit val 和 test set,以避免数据泄露,但sample code里 train val set 是一起做的, testset 在pipeline里用自己的scaler, 这样做会有什么影响吗?
3,如果我想在pipeline里加一个自己数据处理函数,需要把函数用类封装, 还是直接append到pipeline就可以了?

  1. reorder这一列里面的"1"确实全都是positive label. 但是里面的0并不一定是我们要的negative label. 因为reorder这个feature的意思是:如果这次购买是复购,就是1;如果这次是user首次购买此商品,就是0。但是我们的label需要的0表示的是:用户之前购买过,但是在train set里面并没有复购。
  2. 我不认为sample code是你说的这样

但sample code里 train val set 是一起做的, testset 在pipeline里用自己的scaler,

我们在代码里面,是利用pipeline的结构,在train set里面构造出来MinMaxScaler, 然后在validation set里面用train set连的scalar, 这样是最严谨的做法。而最后处理test set的时候,我们是用train+validation set的数据构造出来的模型,当然scalar也是来自于train+validation set.

  1. 嗯是的。我在代码里面就是用类似方法向pipeline里面增加的tensorflow model.