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


?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。