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