1

在过去的几周里,我花了很多时间处理语法错误或逻辑错误的 PMML 文件。我当前的流程包括查看 PMML 文件并逐步执行 JPMML 代码,直到我找出问题所在。

我发现的常见问题,

  • PMML 中的变量未在任何地方定义
  • DerivedField If-Else 语句出现缺失变量并且不使用 missingValueReplacement
  • 尝试将字符串值相乘
  • 在 DataDictionary 中未枚举的分类变量的 MiningSchema 中定义的 invalidValueTreatment 意味着永远不会使用 invalidValueTreatment。

PMML 有哪些调试工具?

任何有助于语法或逻辑调试的工具都会有所帮助。

4

1 回答 1

1

可能还没有这样的工具可用。我的逻辑是调试器将构建在评估器之上。由于 JPMML-Evaluator 库是最先进的评估器,并且它不提供专用的调试工具,因此很难看出其他工具如何在该领域击败它。

在调试 PMML 时,您可能会遇到两种类型的问题。首先,存在与 PMML 文档结构相关的“静态错误”,例如缺少、无效或错位的 XML 元素和属性。它们可以通过对 PMML XSD 文件执行 XML 验证或使用 JPMML-Model Visitor API 来发现。其次,存在与某些数据记录的评估路径相关的“动态错误”。例如,正如您刚刚指出的那样,可能会为分类字段分配一个没有处理程序的值。

JPMML-Evaluator 库在检测到错误情况时应抛出异常。如果您启用了 SAX 定位器信息,那么异常消息会提供有问题的 PMML 内容的行号。当然,如果 JPMML-Evaluator 库进行了正确的日志记录,调试工作会容易得多。

您还可以尝试分析您的 PMML 生产者应用程序的源代码。为什么它首先这样做?

于 2015-11-10T18:52:25.057 回答