我有一个训练有素的人工神经网络(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,我不知道我在做什么:-)
再次感谢并致以最亲切的问候。
StefanJPMML应该能够处理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
然后,您可以尝试以下操作:
- 使用HTTP PUT方法部署XML文件。
- 使用HTTP Get方法获取模型摘要信息。如果请求成功(而不是HTTP状态500错误码失败),那么您的模型得到很好的支持。
- 使用HTTP POST方法以单预测模式或批预测模式执行模型。尝试发送更大的批量,看看是否满足您的性能要求。
- 使用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/