热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

R模型部署

内容概要:1、iris数据集简介2、R模型部署的可能方案3、H2o.ai框架及pojomojo模型部署正式内容:irisdataset简介Iris数据集是常用的分类实验数据集,由F

内容概要:

1、iris数据集简介

2、R模型部署的可能方案

3、H2o.ai框架及pojo/mojo模型部署

正式内容:

iris data set 简介

Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。

《R模型部署》 image
《R模型部署》 image

数据集链接:http://archive.ics.uci.edu/ml/datasets/Iris

图片来源:

https://en.wikipedia.org/wiki/Iris_flower_data_set

R 模型部署的可能方案

R语言模型部署的相关内容网络或者书籍上介绍的比较少,博主在一段时间摸索后对自己了解的可能方案进行如下归纳,仅供参考:

部署方式涉及的包及工具简介
Mojo/PojoH2OH2O可以将训练好的model转换为Plain Old Java Object (POJO) or a Model ObJect, Optimized (MOJO),从而很容易嵌入java环境中。仅需通过提供的h2o-genmodel.jar 生成相应的war包即可。
web APIpumber包Turn your R code into a web API https://www.rplumber.io,而且还可以通过PM2/ Docker等方式实现服务托管
PMMLr2pmml包R package for converting R models to PMML,然后用java调用pmml进行部署

H2o.ai框架及pojo/mojo模型部署

H2o.ai为开源的AI平台(Open Source AI Platform),提供了R、python、h2oflow等作为前端的机器学习建模平台,支持的算法有:监督学习(GLM、GBM、Deep Learning、Distributed Random Forest、Naive Bayes、Stacked Ensembles),非监督学习(GLRM、K-Means、PCA)以及Word2vec模型。

《R模型部署》 image
《R模型部署》 image

H2o.ai模型的部署方式

《R模型部署》 image

训练分类模型(GBM)=>model输出为pojo格式 =>pojo转换为war包 =>jetty容器运行war包 =>api服务

使用 h2o+R 训练 GBM 分类器

library(h2o)
h2o.init()
fr <- as.h2o(iris)
my_model <- h2o.gbm(x=1:4,y=5,training_frame=fr)
h2o.download_pojo(my_model,getwd())
h2o.shutdown()

,同时生成

《R模型部署》 image.png

,在R的工作路径下可以找到。

  • 构建H2O预测服务器

a.准备工作:

Java 1.6、rJava、jetty-runner环境的安装,Linux/ Mac OSX系统

《R模型部署》 image

b.build the H2O Prediction Service Builder:

  1. 克隆steam文件git clone https://github.com/h2oai/steam

  2. 打开一个terminal窗口,进到steam/prediction-service-builder目录下

  3. Run ./gradlew build 来构建服务

  4. 出现BUILD SUCCESSFUL message之后,Run ./gradlew jettyRunWar 来运行builder service

    《R模型部署》 image

  5. 打开浏览器,输入localhost:55000,出现模型builder界面,选择 GBM_model_R_XXX.java/h2o-genmodel.jar包(上一步生成的文件),此时会生成一个war,保存(拷贝到~/steam/prediction-service-builder目录下)以便下一步使用。

《R模型部署》 image
《R模型部署》 image

  • Run the Builder Service

新开一个一个terminal窗口,进到~/steam/prediction-service-builder目录下,运行:java -jar jetty-runner-9.3.9.M1.jar &#8211;port 55001 ~/GBM_model_R_1500467395689_54.war

《R模型部署》 image

浏览器输入http://localhost:55001,进入预测界面:

《R模型部署》 image

输入相关参数,点击predict,页面右侧就出现了预测结果:分属于每一个类别的概率。

《R模型部署》 image

同时,还可以点击
《R模型部署》 image

箭头按钮,弹出api网址,通过传递参数,即可得到json格式的预测结果:

《R模型部署》 image

参考文档:

https://github.com/h2oai/steam/tree/master/prediction-service-builder


推荐阅读
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
author-avatar
清清果冻儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有