如何解决SAS导入R生成的XGBoost PMML模型时的格式错误?
解决SAS PROC PSCORE导入修改版PMML文件的错误问题
错误原因
问题核心是PMML版本规范不兼容:PMML 4.2的<RegressionModel>标签里,根本没有normalizationMethod="softmax"这个配置——softmax是PMML 4.4才新增的归一化方法。你只手动修改了文件的版本号,却没同步修正这个不符合4.2规范的属性,SAS的PROC PSCORE严格按照PMML 4.2校验,自然报错。
解决步骤
直接生成符合PMML 4.2的文件(推荐)
别手动改版本号了,在R里用pmml包生成模型时直接指定输出PMML 4.2版本。找到你生成PMML的代码,加上pmml_version = "4.2"参数即可,示例:library(pmml) # 假设你的XGBoost模型对象名为xgb_model pmml(xgb_model, pmml_version = "4.2")这样生成的文件从根结构到细节都符合4.2规范,无需手动调整。
手动修正现有PMML文件
如果必须修改已生成的文件,按PMML 4.2的多分类模型规范调整:- 把出错行的
<RegressionModel functionName="classification" normalizationMethod="softmax" modelName="CollectingModel">,替换成<MultinomialRegressionModel functionName="classification" modelName="CollectingModel">——PMML 4.2中多分类回归使用这个标签,不需要softmax属性。 - 检查后续模型子结构,确保每个分类类别对应一个
<RegressionTable>,且结构符合<MultinomialRegressionModel>的要求。 - 用PMML合规性验证工具(如开源的PMML Validator)检查修改后的文件,确保没有其他规范错误。
- 把出错行的
内容的提问来源于stack exchange,提问作者Mar
相关产品推荐
相关产品推荐

