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棵树的差距。
留言
張貼留言