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相关推荐

  1. [PMML] LightGBM模型保存为PMML文件,通过Java或者Python调用

    1.LightGBM 多分类 import os import lightgbm as lgb from sklearn import datasets from sklearn.model_sele ...

  2. scala-MLlib官方文档---spark.ml package--ML Pipelines+Collaborative Filtering+Frequent Pattern Mining

    三. ML Pipeline Main concepts in Pipelines(管道中的主要概念) MLlib对用于机器学习算法的API进行了标准化,从而使将多种算法组合到单个管道或工作流中变得更 ...

  3. 【Spark】Spark训练Lr模型,并保存为Pmml

    scala版本spark构建的Lr模型: 一.问题背景   需要构建一个Lr模型来进行物品的Ctr预测. 二.解决方案   由于我们训练的数据量较多,所以首先考虑采用spark来构建模型并测试训练,这 ...

  4. ML之nyoka:基于nyoka库利用LGBMClassifier模型实现对iris数据集训练、保存为pmml模型并重新载入pmml模型进而实现推理

    ML之nyoka:基于nyoka库利用LGBMClassifier模型实现对iris数据集训练.保存为pmml模型并重新载入pmml模型进而实现推理 目录 基于nyoka库利用LGBMClassifi ...

  5. ML之xgboost:基于xgboost(5f-CrVa)算法对HiggsBoson数据集(Kaggle竞赛)训练(模型保存+可视化)实现二分类预测

    ML之xgboost:基于xgboost(5f-CrVa)算法对HiggsBoson数据集(Kaggle竞赛)训练(模型保存+可视化)实现二分类预测 目录 数据集简介 输出结果 设计思路 核心代码 数 ...

  6. python环境下,XGBoost模型文件转pmml格式用于部署

    一. python环境下生成PMML 1. sklearn接口的xgboost 需要用sklearn2pmml包来生成pmml文件,一共有两种方法: 方法一: 在管道pipeline中进行fit后保存 ...

  7. 基于Spark ML 聚类分析实战的KMeans

    2019独角兽企业重金招聘Python工程师标准>>> 聚类分析是一个无监督学习 (Unsupervised Learning) 过程, 一般是用来对数据对象按照其特征属性进行分组, ...

  8. 使用spark ml pipeline进行机器学习

    一.关于spark ml pipeline与机器学习 一个典型的机器学习构建包含若干个过程 1.源数据ETL 2.数据预处理 3.特征选取 4.模型训练与验证 以上四个步骤可以抽象为一个包括多个步骤的 ...

  9. apache beam_Apache Beam ML模型部署

    apache beam This blog post builds on the ideas started in three previous blog posts. 这篇博客文章基于之前 三篇 博 ...

最新文章

  1. 安徽工业大学工商学院计算机,发个帖子(对计算机学弟学妹们的建议)
  2. Stanford UFLDL教程 白化
  3. pip sintall pyspider 报错:ERROR: Command errored out with exit status 10
  4. 计算机研究所专业课,【择校必看】十三所计算机专业课只考数据结构的985院校!...
  5. ae连续流动的线条_贡献 | AE片头制作绝对经验
  6. 如何删除windowsXP的计算器
  7. 2-27 最短路径《啊哈算法》2-28完成四种算法
  8. OpenShift 4 - 下载OpenShift项目中的ImageStream
  9. 《设计模式之禅》之——六大设计原则解读
  10. Unix系统编程()发送信号kill
  11. Error:Cannot find module 'stylus'
  12. Mybatis 参考
  13. Algorithms - Counter计数器 的 详解 与 代码
  14. 【matlab】多维向量的转置
  15. SecureCRT软件安装
  16. java 双三次线性插值_三种常见的图像处理双三次插值算法
  17. 视音频学习入门---ffmpeg篇(四)---基于windows平台的ffmpeg开发(二)
  18. C# 颜色和名称对照表
  19. PAT基础-厘米换算英尺英寸 JAVA
  20. 公司倒闭,新的开始,是好是坏全然不知

热门文章

  1. 一个在阿里做运营同学找一个月多月工作总结出以下几点
  2. [luogu P4230]连环病原体
  3. linux machine start,Linux中的MACH定义之MACHINE_START / MACHINE_END
  4. Putty的下载和安装
  5. 安全狗再次入选中国数字安全百强报告
  6. oppoa5系统服务器是什么,买OPPO A5还是OPPO A3?OPPO A3和OPPO A5区别对比
  7. Ultraiso制作Centos7 优盘Udisk 启动镜像
  8. matlab中牛顿下山法实例,非线性方程的数值解法牛顿下山法matlab
  9. Google表单初学者指南
  10. Week10-树形数据结构与应用