xgboost转pmml

这里假定xgboost的版本是1.5及以上,1.5以下的参考https://github.com/jpmml/jpmml-xgboost

xgboost转pmml,使用的工具是https://github.com/jpmml/jpmml-xgboost,release中下载可执行的jar文件

1、python中的操作

看入模变量的dtype

float64的要声明为float

int64的要声明为int

def to_fmap_type(dtype):

    if dtype == "int64":

        return "int"

    elif dtype == "float64":

        return "float"

    elif dtype == "uint8":

        return "i"

    else:

        raise ValueError(dtype)

feature_types = [to_fmap_type(dtype) for dtype in X.dtypes]

dtrain = xgb.DMatrix(X, label=y, feature_types=feature_types)

model = xgb.train(params,dtrain,num_rounds)

model.save_model('../xgb_model.json')

2、命令行cmd

java -jar pmml-xgboost-example-executable-1.7.0..jar --model-input xgb_model.json --target-name y --pmml-output xgb_model.pmml

转出来我发现pmml中疑似表示树棵数的segment_id只有300+,而我的model是接近500棵树,但是我用转的pmml上传决策引擎跑批测试,预测结果和python是一致的,所以segment_id我的理解是不是有问题?上次lgb转的pmml只有1棵树的差距。



 

留言

熱門文章