You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用m2cgen移植XGBoost模型时出现NaN问题求助

问题分析与解决办法

原因

你遇到的nan是因为m2cgen在读取XGBoost模型的**基准分数(base_score)**时出现了解析错误。XGBoost回归模型的预测逻辑是「基准分数 + 所有决策树的输出」,这里的nan就是本该被替换成base_score的位置出了问题,大概率是m2cgen和你使用的XGBoost 1.7.3存在兼容性适配问题。

解决办法

  • 手动指定base_score规避问题
    在初始化XGBRegressor时显式设置base_score=0,让模型基准分数固定为0,m2cgen就能正确解析并生成正常代码:

    model = xgb.XGBRegressor(objective ='reg:squarederror', 
                             max_depth = 2, 
                             n_estimators = 1,
                             eval_metric="rmse",
                             base_score=0)
    

    重新运行后,生成的C代码里的nan + var0会变成0.0 + var0,可正常使用。

  • 手动修正生成的C代码
    先通过Python获取模型真实的base_score:

    print(model.get_booster().attr('base_score'))
    

    将得到的数值替换C代码中的nan即可。比如输出是0.5,就把返回行改成return 0.5 + var0;。

  • 升级m2cgen版本
    旧版m2cgen对高版本XGBoost的base_score读取逻辑可能存在bug,尝试升级到最新版本:

    pip install --upgrade m2cgen
    

内容的提问来源于stack exchange,提问作者SBF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 14:00:13