【问题标题】:How to handle null values with xgboost converted to pmml?如何处理将 xgboost 转换为 pmml 的空值?
【发布时间】:2019-07-08 13:19:26
【问题描述】:

我有一个基于包含 np.nan 值的数值数据训练的 xgboost 模型。 我使用 sklearn2pmml 库将 xgboost 模型转换为 pmml。

我用 openscoring 库测试 pmml。 在没有空值的数据上,pmml 进行预测并给出与模型相同的结果。
在具有空值的数据上,pmml 无法进行预测并返回 JSONDecodeError。

我应该如何修改 pmml 以处理空值并返回与原始预测相同的预测(xgboost 模型)?

【问题讨论】:

    标签: scikit-learn null xgboost pmml openscoring


    【解决方案1】:

    对于带有空值的数据,pmml 无法进行预测并返回 JSONDecodeError。

    JSONDecodeError 与 Openscoring 相关,与任何级别的 PMML、XGBoost 或 Scikit-Learn 无关。

    这个 JSONDecodeError 的根本原因应该在 Openscoring 的服务器端日志文件中解释。鉴于这是一个“解码错误”,那么您的输入很可能是无效和/或格式错误的。

    【讨论】:

    • 没错。我将输入数据中的 np.nan 更改为字符串“NA”,并通过 Openscoring。然后在 PMML 中,它导致“NA”的值无效。我可以用属性invalidValueTreatment="asMissing"missingValueStrategy="none" 处理它,谢谢你的帮助!
    • 使用 sklearn2pmml 包将 XGBoost 模型转换为 PMML 时,可以使用 sklearn2pmml.decoration.CategoricalDomainContinuousDomain 伪转换器自定义缺失值的表示和处理 - 请参阅文档。这样您就无需手动修改 PMML 文件。
    猜你喜欢
    • 2019-06-05
    • 2019-10-13
    • 2022-10-23
    • 2022-01-11
    • 2019-06-23
    • 1970-01-01
    • 2016-11-03
    • 2019-05-22
    • 2023-01-14
    相关资源
    最近更新 更多