xgboost 中 model.predict 与 model.get_booster()预测结果为什么不一样呢?

xgb model.predict 与 model.get_booster() 方法预测结果为什么不一样呢?

1. 亲测0.71版本训练出来的模型,用0.90版本的xgb预测,结果不一致

2. 同一版本下model.get_booster().predict与model.predict预测结果为什么不一致呢?

看上去也没有问题,xgb不是已经设置缺失值了吗,为什么预测结果不一样呢?

习惯性的有问题直接看源码,走进源码我们一起探讨真相。

解析源码先看看model.predict与model.get_booster().predict有什么区别?细品

通过源码能够看出来model.predict 底层也会调用get_booster().predict方法,那到底差哪了呢,继续向上扒,发现model.predict在调用model.get_booster方法之前多了一步DMatrix方法调用,model将自带缺失值传给了DMatrix中的missing参数,对比code中我们单独调用model.get_booster().predict方法有什么不同呢,少了给数据填充缺失值!!!!!


接下来我们在DMatrix中设置缺失值后,重新调用model.predict与model.get_booster().predict方法预测结果会是什么样子的呢?结果终于一样了,都是25.863


你可能感兴趣的:(xgboost 中 model.predict 与 model.get_booster()预测结果为什么不一样呢?)