我有一个经过训练的人工神经网络 (ANN) 的 PMML 文件。我想创建一个 Java 方法,它只接受输入并返回目标值。
这看起来很简单,但我不知道如何实现。
PMML 版本 = 3.0
更新:2013年5月24日
我尝试使用 jpmml Java API。
这就是我所做的:
(1) 通过 Maven 中央存储库 ( link ) 下载三个 .Jar 文件:
- pmml-manager-1.0.2.jar
- pmml-model-1.0.2.jar
- pmml-evaluator-1.0.2.jar
(2) 使用 eclipse 来“配置构建路径”并添加这三个外部 .Jar
(3) 导入名为“text.xml”的 PMML 文件(人工神经网络 (ANN))PMML 版本 =“3.0”
(4) 尝试运行 jpmml-project 提供的示例“TreeModelTraversalExample.java ”
显然由于某些原因它不起作用:
- 上述示例不适用于 ANN。 如何重写?
- 我的 PMML 文件采用 XML 格式。 格式正确吗?
- 我不知道如何处理或添加 Java API。 我是否应该通过在 Eclipse 中“配置构建路径”来添加它们?
明显的事实#2,我不知道我在做什么:-)
再次感谢并致以最诚挚的问候。
斯特凡
最佳答案
JPMML 应该能够处理 PMML 3.X 和更新版本的 NeuralNetwork模型没有问题。此外,它应该能够处理此类模型可能伴随的所有规范化和非规范化转换。
我首先需要澄清一下您为什么对将 PMML 模型转换为 Java 代码感兴趣。这使整个事情变得更加复杂,并且没有增加任何值(value)。 JPMML 库本身相当紧凑,并且具有最小的外部依赖性(在撰写本文时,它仅依赖于 commons-math)。性能方面应该不会有太大差异。您可以合理地期望在现代台式计算机上每秒获得高达 10'000 的得分。
JPMML 代码库最近已移至 GitHub:http://github.com/jpmml/jpmml
Turn Inc. 的编码人员已 fork 此代码库,并正在为选定的模型类型实现 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 方法取消部署模型。
您可以随时尝试联系项目所有者以获取更多见解。我确信他们都是好人。
关于java - 将 PMML - 模型(人工神经网络)转换为 Java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16687649/