转换PMML -模型(人工神经网络)到Java代码



我有一个训练有素的人工神经网络(ANN)的PMML文件。我想创建一个Java方法,它只接受输入并返回目标值。

这似乎很容易,但我不知道如何实现它。

PMML版本= 3.0

更新:24.05.2013

我尝试使用jpmml Java API。

我是这样做的:

(1)通过Maven Central Repository (link)下载了三个.Jar文件:

  • pmml-manager-1.0.2.jar
  • pmml-model-1.0.2.jar
  • pmml-evaluator-1.0.2.jar

(2)使用eclipse来"配置构建路径",并添加了三个外部.Jar的

(3)导入我的PMML文件名为"text.xml"(人工神经网络(ANN)) PMML版本="3.0"

(4)尝试运行由jpmm -project

提供的示例"TreeModelTraversalExample.java"

显然,由于某些原因,它没有工作:

  • 上面提到的例子不适用于人工神经网络。如何重写?
  • 我的pmml文件是xml格式的。格式正确吗? 我不知道如何处理或添加Java API。我应该在eclipse中添加"配置构建路径"吗?

显而易见的事实#2,我不知道我在做什么:-)

再次感谢并致以最亲切的问候。

Stefan

JPMML应该能够处理PMML 3。X和更新版本的NeuralNetwork模型没有问题。此外,它应该能够处理可能伴随这些模型的所有规范化和非规范化转换。

我可以首先澄清一下,为什么您对将PMML模型转换为Java代码感兴趣。这会使整个问题复杂化,而且不会增加任何价值。JPMML库本身非常紧凑,并且具有最小的外部依赖(在编写本文时,它仅依赖于common_math)。性能方面应该不会有太大区别。你可以合理地期望在一台现代台式计算机上每秒获得多达10,000个分数。

JPMML代码库最近已经转移到GitHub: http://github.com/jpmml/jpmml

Turn Inc.的程序员已经分叉了这个代码库,并正在为选定的模型类型实现pmml到java的翻译(参见顶级模块"pmml-translation"):https://github.com/turn/jpmml

目前我建议您查看Openscoring项目(内部使用JPMML): http://www.openscoring.org

然后,您可以尝试以下操作:

  1. 使用HTTP PUT方法部署XML文件。
  2. 使用HTTP Get方法获取模型摘要信息。如果请求成功(而不是HTTP状态500错误码失败),那么您的模型得到很好的支持。
  3. 使用HTTP POST方法以单预测模式或批预测模式执行模型。尝试发送更大的批量,看看是否满足您的性能要求。
  4. 使用HTTP DELETE方法取消部署模型

您可以尝试联系项目所有者以获得更多见解。我相信他们都是好人。

另一种方法是使用级联API。有一个名为"Pattern"的层叠库,它将PMML模型转换为Java中的层叠应用程序。https://github.com/Cascading/pattern

通常这些是Hadoop的工作;然而,如果你在Cascading中使用"本地模式"流规划器,它可以被构建为一个JAR文件,以包含在其他Java应用程序中。

人工神经网络模型的工作正在进行中。查看开发者邮件列表:https://groups.google.com/forum/?fromgroups#!论坛/模式用户

我想这可能是你需要的。它是一个开源库,声称能够读取和评估pml神经网络。我没有试过。

https://code.google.com/p/jpmml/

最新更新