Spark-ml模型保存为PMML
spark版本2.1.3
maven设置
<dependency><groupId>org.apache.spark</groupId><artifactId>spark-mllib_2.11</artifactId><version>2.1.3</version><exclusions><exclusion><groupId>org.jpmml</groupId><artifactId>pmml-model</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.jpmml</groupId><artifactId>jpmml-sparkml</artifactId><version>1.2.13</version></dependency>
spark-ml要去掉pmml-model依赖
模型训练
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.spark.ml.Pipeline;
import org.apache.spark.ml.PipelineModel;
import org.apache.spark.ml.PipelineStage;
import org.apache.spark.ml.classification.RandomForestClassificationModel;
import org.apache.spark.ml.classification.RandomForestClassifier;
import org.apache.spark.ml.evaluation.BinaryClassificationEvaluator;
import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator;
import org.apache.spark.ml.evaluation.RegressionEvaluator;
import org.apache.spark.ml.feature.VectorAssembler;
import org.apache.spark.ml.feature.VectorIndexer;
import org.apache.spark.ml.linalg.SparseVector;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.types.StructType;import org.dmg.pmml.PMML;
import org.jpmml.model.JAXBUtil;
import org.jpmml.sparkml.PMMLBuilder;
。。。String[] features=new String[]{"category", "future_day", "banner_min_time","banner_min_price","page_train", "page_flight", "page_bus", "page_transfer","start_end_distance", "total_transport", "high_railway_percent", "avg_time", "min_time","avg_price", "min_price","label_05060801", "label_05060701", "label_05060601", "label_02050601", "label_02050501", "label_02050401","is_match_category", "train_consumer_prefer", "flight_consumer_prefer", "bus_consumer_prefer"};VectorAssembler assembler = new VectorAssembler().setInputCols(features).setOutputCol("features");RandomForestClassifier rf = new RandomForestClassifier().setLabelCol("isclick").setFeaturesCol("features").setMaxDepth(7).setNumTrees(60).setSeed(2018).setMinInstancesPerNode(1);;Pipeline pipeline = new Pipeline().setStages(new PipelineStage[]{assembler, rf});PipelineModel pipelineModel = pipeline.fit(trainData);
保存PipelineModel模型
pipelineModel.write().overwrite().save("D://model/random-forest");
hdfs保存方法也一样,换成hdfs路径就行了。
保存文件的PMML格式
StructType schema = trainData.schema();PMML pmml = new PMMLBuilder(schema, pipelineModel).build();saveToLocalFile(pmml);
// saveToHdfsFile(pmml);
private void saveToLocalFile(PMML pmml) {String targetFile = "D://model/pmml/pipemodel";try (FileOutputStream fis = new FileOutputStream(targetFile)) {JAXBUtil.marshalPMML(pmml, new StreamResult(fis));} catch (JAXBException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
HDFS路径保存为PMML,fileSystem为HDFS文件系统
private void saveToHdfsFile(PMML pmml) throws IOException {String targetFile = "/data/twms/traffichuixing/model/stage/pmml/rf-pipepmml";Path path = new Path(targetFile);try(FSDataOutputStream fos = fileSystem.create(path)) {JAXBUtil.marshalPMML(pmml, new StreamResult(fos));} catch (JAXBException e) {e.printStackTrace();logger.error(e.getMessage());}}
Spark-ml模型保存为PMML相关推荐
- [PMML] LightGBM模型保存为PMML文件,通过Java或者Python调用
1.LightGBM 多分类 import os import lightgbm as lgb from sklearn import datasets from sklearn.model_sele ...
- scala-MLlib官方文档---spark.ml package--ML Pipelines+Collaborative Filtering+Frequent Pattern Mining
三. ML Pipeline Main concepts in Pipelines(管道中的主要概念) MLlib对用于机器学习算法的API进行了标准化,从而使将多种算法组合到单个管道或工作流中变得更 ...
- 【Spark】Spark训练Lr模型,并保存为Pmml
scala版本spark构建的Lr模型: 一.问题背景 需要构建一个Lr模型来进行物品的Ctr预测. 二.解决方案 由于我们训练的数据量较多,所以首先考虑采用spark来构建模型并测试训练,这 ...
- ML之nyoka:基于nyoka库利用LGBMClassifier模型实现对iris数据集训练、保存为pmml模型并重新载入pmml模型进而实现推理
ML之nyoka:基于nyoka库利用LGBMClassifier模型实现对iris数据集训练.保存为pmml模型并重新载入pmml模型进而实现推理 目录 基于nyoka库利用LGBMClassifi ...
- ML之xgboost:基于xgboost(5f-CrVa)算法对HiggsBoson数据集(Kaggle竞赛)训练(模型保存+可视化)实现二分类预测
ML之xgboost:基于xgboost(5f-CrVa)算法对HiggsBoson数据集(Kaggle竞赛)训练(模型保存+可视化)实现二分类预测 目录 数据集简介 输出结果 设计思路 核心代码 数 ...
- python环境下,XGBoost模型文件转pmml格式用于部署
一. python环境下生成PMML 1. sklearn接口的xgboost 需要用sklearn2pmml包来生成pmml文件,一共有两种方法: 方法一: 在管道pipeline中进行fit后保存 ...
- 基于Spark ML 聚类分析实战的KMeans
2019独角兽企业重金招聘Python工程师标准>>> 聚类分析是一个无监督学习 (Unsupervised Learning) 过程, 一般是用来对数据对象按照其特征属性进行分组, ...
- 使用spark ml pipeline进行机器学习
一.关于spark ml pipeline与机器学习 一个典型的机器学习构建包含若干个过程 1.源数据ETL 2.数据预处理 3.特征选取 4.模型训练与验证 以上四个步骤可以抽象为一个包括多个步骤的 ...
- apache beam_Apache Beam ML模型部署
apache beam This blog post builds on the ideas started in three previous blog posts. 这篇博客文章基于之前 三篇 博 ...
最新文章
- 安徽工业大学工商学院计算机,发个帖子(对计算机学弟学妹们的建议)
- Stanford UFLDL教程 白化
- pip sintall pyspider 报错:ERROR: Command errored out with exit status 10
- 计算机研究所专业课,【择校必看】十三所计算机专业课只考数据结构的985院校!...
- ae连续流动的线条_贡献 | AE片头制作绝对经验
- 如何删除windowsXP的计算器
- 2-27 最短路径《啊哈算法》2-28完成四种算法
- OpenShift 4 - 下载OpenShift项目中的ImageStream
- 《设计模式之禅》之——六大设计原则解读
- Unix系统编程()发送信号kill
- Error:Cannot find module 'stylus'
- Mybatis 参考
- Algorithms - Counter计数器 的 详解 与 代码
- 【matlab】多维向量的转置
- SecureCRT软件安装
- java 双三次线性插值_三种常见的图像处理双三次插值算法
- 视音频学习入门---ffmpeg篇(四)---基于windows平台的ffmpeg开发(二)
- C# 颜色和名称对照表
- PAT基础-厘米换算英尺英寸 JAVA
- 公司倒闭,新的开始,是好是坏全然不知
热门文章
- 一个在阿里做运营同学找一个月多月工作总结出以下几点
- [luogu P4230]连环病原体
- linux machine start,Linux中的MACH定义之MACHINE_START / MACHINE_END
- Putty的下载和安装
- 安全狗再次入选中国数字安全百强报告
- oppoa5系统服务器是什么,买OPPO A5还是OPPO A3?OPPO A3和OPPO A5区别对比
- Ultraiso制作Centos7 优盘Udisk 启动镜像
- matlab中牛顿下山法实例,非线性方程的数值解法牛顿下山法matlab
- Google表单初学者指南
- Week10-树形数据结构与应用