将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
然后,您可以尝试以下方法:
- 使用HTTP PUT方法部署XML文件。
- 使用HTTP GET方法获取模型摘要信息。 如果请求成功(而不是使用HTTP状态500错误代码失败),那么您的模型得到了很好的支持。
- 使用HTTP POST方法以单预测模式或批量预测模式执行模型。 尝试发送更大批量的产品,看它是否符合您的性能要求。
- 使用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神经网络。 我没试过。