将PMML – 模型(人工神经网络)转换为Java代码

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

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

PMML版本= 3.0

更新:24.05.2013

我尝试使用jpmml Java API。

这就是我做的:

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

  • PMML经理-1.0.2.jar
  • PMML模型-1.0.2.jar
  • PMML评价器-1.0.2.jar

(2)使用eclipse“配置构建路径”并添加了这三个外部.Jar

(3)导入名为“text.xml”的PMML文件(人工神经网络(ANN))PMML version =“3.0”

(4)试图运行jpmml-project提供的示例“ TreeModelTraversalExample.java ”

显然它由于某些原因不起作用:

  • 提到的例子不适用于ANN。 如何改写呢?
  • 我的PMML文件是XML格式的。 它是正确的格式吗?
  • 我不知道如何处理或添加Java API。 我应该在eclipse中通过“配置构建路径”添加它们吗?

明显的事实#2,我不知道我做了什么:-)

再次感谢和最亲切的问候。

斯特凡

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

我可以澄清一下,为什么你有兴趣首先将PMML模型转换为Java代码。 这使整个问题复杂化,并没有增加任何价值。 JPMML库本身相当紧凑,并且具有最小的外部依赖性(在编写本文时,它仅取决于commons-math)。 在性能方面应该没有太大差异。 您可以合理地期望在现代台式计算机上获得高达10,000的scorings / sec。

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方法取消部署模型。

您可以随时尝试联系项目所有者以获取更多信息。 我相信他们是好人。

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

通常那些是针对Hadoop的工作; 但是,如果在Cascading中使用“本地模式”流程规划器,则可以将其构建为JAR文件以包含在其他Java应用程序中。

ANN模型正在进行中。 查看开发者电子邮件列表: https : //groups.google.com/forum/?fromgroups#!forum / pattern-user

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

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