cv轮子和手动cv的异同

1.cross_val_score和手动CV比较
1.1
from sklearn.model_selection import cross_val_score

1.2
手动CV

两者结果是完全一致的,说明cross_val_score的逻辑就是如手工实现那样
注:cv.split是得到4组 train index+test index,index去select对应的数据

2.lgb.cv和手工CV比较
lgb.cv和手工CV的结果对不上,是因为
lgb有一个特征binning的操作,lgb.cv的时候用的是整个数据集进行的binning(就类似于评分卡的时候在整个数据集上WOE编码),而我们手工cv代码中是用的每次循环中train子数据集进行的binning,所以结果存在差异,手动代码中只要构造dtrain中加一个reference = all_train就能获得相同的结果

注:从上面lgb.cv这个事情中再次说明,CV多多少少都是带有leakage的,没有完全干净的。

留言

熱門文章