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

网友评论