jpmml导出java文件_如何使用 Java 调取 Python、R 的训练模型?

原标题:如何使用 Java 调取 Python、R 的训练模型?

8a88df3d7ebf3faedb91b1ca91520ed9.png

在工业界,我们经常会使用 Python 或 R 来训练离线模型, 使用 Java 来做在线 Web 开发应用——这就涉及到了使用 Java 跨语言来调用 Python 或 R 训练的模型。

PMML

PMML 是 Predictive Model Markup Language 的缩写,翻译为中文就是“预测模型标记语言”。它是一种基于XML的标准语言,用于表达数据挖掘模型,可以用来在不同的应用程序中交换模型。

也就是说它定义了一个标准,不同语言都可以根据这个标准来实现。关于 PMML 内部的实现原理细节,我们这里不做深究,感兴趣的可以参见:http://dmg.org/pmml/v4-3/GeneralStructure.html。

PMML 能做什么

介绍完了 PMML 的概念后,大家可能还是很懵,不清楚它有什么用。先来相对正式地说下它的用处:对于 PMML,使用一个应用程序很容易在一个系统上开发模型,并且只需通过发送XML配置文件就可以在另一个系统上使用另一个应用程序部署模型。也就是说我们可以通过 Python 或 R 训练模型,将模型转为 PMML 文件,再使用 Java 根据 PMML 文件来构建 Java 程序。

来看一张关于 PMML 用途的图片:

0f7371930007197f5dfdfd8632e95561.png

这张图的信息来一一说明下:

整个流程分为两部分:离线和在线。

离线部分流程是将样本进行特征工程,然后进行训练、生成模型。一般离线部分常用 Python 中的 sklearn、R 或者 Spark ML 来训练模型。

在线部分是根据请求得到样本数据,对这些数据采用与离线特征工程一样的方式来处理,然后使用模型进行评估。一般在线部分常用 Java、C++ 来开发。

离线部分与在线部分是通过 PMML 连接的,也就是说离线训练好了模型之后,将模型导出为 PMML 文件,在线部分加载该 PMML 文件生成对应的评估模型。

我们可以看到,PMML 是连接离线与在线环节的关键࿰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中可以使用JAK库或libkml-java来生成KML文件。 1. 使用JAK库 JAK库是一个用于生成和解析KML文件Java库。它提供了很多方法来构建KML文件,并且支持所有KML标签和元素。 以下是一个简单的示例代码,演示如何使用JAK库生成一个KML文件: ```java import de.micromata.opengis.kml.v_2_2_0.*; public class KMLGenerator { public static void main(String[] args) { // 创建KML文档 Kml kml = new Kml(); Document document = kml.createAndSetDocument().withName("My KML Document"); // 创建Placemark Placemark placemark = document.createAndAddPlacemark(); placemark.withName("My Placemark").withDescription("This is my placemark"); // 添加点坐标 Coordinate coord = new Coordinate(10.0, 20.0); placemark.createAndSetPoint().addToCoordinates(coord); // 保存KML文件 kml.marshal(new File("path/to/my.kml")); } } ``` 2. 使用libkml-java libkml-java是Google开发的一个用于处理KML和KMZ文件的C++库的Java绑定。它提供了Java类来生成和解析KML文件,并且支持所有KML标签和元素。 以下是一个简单的示例代码,演示如何使用libkml-java生成一个KML文件: ```java import com.google.common.io.Files; import com.google.kml.Kml; import com.google.kml.Placemark; import com.google.kml.Point; import com.google.kml.coordinates.Coordinate; public class KMLGenerator { public static void main(String[] args) { // 创建KML文档 Kml kml = new Kml(); Placemark placemark = new Placemark().withName("My Placemark").withDescription("This is my placemark"); // 添加点坐标 Coordinate coord = new Coordinate(10.0, 20.0); Point point = new Point().addToCoordinates(coord); placemark.setGeometry(point); // 添加Placemark到KML文档 kml.setFeature(placemark); // 保存KML文件 try { Files.write(kml.toString().getBytes(), new File("path/to/my.kml")); } catch (IOException e) { e.printStackTrace(); } } } ``` 以上两种方法都可以用来生成KML文件,具体选择哪种方法取决于你的需求和个人偏好。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值