Spark快速获得CrossValidator的最佳模型参数

Spark提供了便利的Pipeline模型,可以轻松的创建自己的学习模型。

但是大部分模型都是需要提供参数的,如果不提供就是默认参数,那么怎么选择参数就是一个比较常见的问题。Spark提供在org.apache.spark.ml.tuning包下提供了模型选择器,可以替换参数然后比较模型输出。

目前有CrossValidator和TrainValidationSplit两种,比如一个文本情感预测模型。

Pipeline只有三步,第一步切词,第二步HashingTF,第三步NB分类

Pipeline pipeline = new Pipeline()
                .setStages(new PipelineStage[]{tokenizer, hashingTF, naiveBayes});

ParamMap[] paramMaps = new ParamGridBuilder()
                .addGrid(hashingTF.numFeatures(), new int[]{10000, 100000, 500000, 1000000})
                .build();
CrossValidator cv = new CrossValidator()
                .setEstimator(pipeline)
                .setEvaluator(new BinaryClassificationEvaluator())
                .setEstimatorParamMaps(paramMaps);

其中HashingTF的参数选择非常重要,我们这里就随便尝试几种,然后放在CrossValidator中去。

最后我们会获得一个CrossValidatorModel类,这里有两种选择。

第一种是自己手动获取其中的参数,因为bestModel的参数就是我们最后选择的参数

Pipeline bestPipeline = (Pipeline) model.bestModel().parent();
PipelineStage stage = bestPipeline.getStages()[1];
stage.extractParamMap().get(stage.getParam("numFeatures"));

这种方法可以获得值,但是需要根据你模型情况修改获取的位置。

如果你只是想知道最佳参数是多少,并不是需要在上下文中使用,那还有一个更简单的方法。

修改log4j的配置,添加

log4j.logger.org.apache.spark.ml.tuning.TrainValidationSplit=INFO
log4j.logger.org.apache.spark.ml.tuning.CrossValidator=INFO

效果如下:

原文地址:https://www.cnblogs.com/itboys/p/9827567.html

时间: 2024-10-29 04:53:59

Spark快速获得CrossValidator的最佳模型参数的相关文章

利用 TFLearn 快速搭建经典深度学习模型

利用 TFLearn 快速搭建经典深度学习模型 使用 TensorFlow 一个最大的好处是可以用各种运算符(Ops)灵活构建计算图,同时可以支持自定义运算符(见本公众号早期文章<TensorFlow 增加自定义运算符>).由于运算符的粒度较小,在构建深度学习模型时,代码写出来比较冗长,比如实现卷积层:5, 9 这种方式在设计较大模型时会比较麻烦,需要程序员徒手完成各个运算符之间的连接,像一些中间变量的维度变换.运算符参数选项.多个子网络连接处极易发生问题,肉眼检查也很难发现代码中潜伏的 bu

Spark快速上手之交互式分析

1.1  Spark交互式分析 运行Spark脚本前,启动Hadoop的HDFS和YARN.Spark的shell提供 了简单方式去识别API,同样也有一个强大的工具去交互式地分析数据.两种语言有这样的交换能力,分别是Scala 和 Python.下面将演示如何使用Python来分析数据文件. 进入Spark安装主目录,输入下面的命令,python命令行模式将会启动. ./bin/pyspark Spark的主要抽象是一个称之为弹性分布式数据集(Resilient Distributed Dat

fluent批量处理&mdash;&mdash;模型参数的设置

对于常见的工程应用来说,计算的工况很多,尤其优化工作,少则几百,多则上千,面对如此之多的case文件要写,假如按照一个一个的读写的话,相信你一定会为这么机械的工作烦躁,甚至影响今后好几天的心情,那么有什么简便一些的方法呢?答案是肯定的.那就是采用fluent的journal文件.首先打开fluent软件,在file/write/start journal,见下图: 选择保存文件名*.journal后(看你自己怎么设置文件名),我一般按照这一组的类型来命名:这样, journal文件就开始记录你以

【scikit-learn】如何进行模型参数的选择

内容概要 这一节我们介绍以下几个内容: 我们该怎样选择模型用于监督学习任务? 我们该如何选择调整得到最好的模型参数? 我们该如何对测试数据进行预测估计? 1. 使用整个数据集进行训练和测试 这里我们使用手中的整个数据集来训练模型 使用同样的数据集来测试模型,然后评估预测的结果和真实结果的差别 In [1]: from sklearn.datasets import load_iris iris = load_iris() # create X(features) and y(response)

Python快速学习09: 函数的参数

前言 系列文章:[传送门] 继续干起来!! 正文 我们已经接触过函数,函数是可以被引用的(访问或者以其他变量作为其别名),也作为参数传入函数,以及作为列表和字典等等容器对象的元素(function)的参数(arguments)传递. 传递函数 形式参数       位置参数 默认参数 关键字变量参数 位置传递 例子: def f(a,b,c): return a+b+c print(f(1,2,3)) #在调用f时,1,2,3根据位置分别传递给了a,b,c. 形式参数 关键字传递 用位置传递会感

spark快速大数据分析学习笔记*初始化sparkcontext(一)

初始化SparkContext 1// 在java中初始化spark 2 import org.apache.spark.SparkConf; 3 import org.apache.spark.api.java.JavaSparkContext; 4 5 SparkConf conf=new SparkConf().setMaster("local").setAppName("my app"); 6 //集群url:本例是运行在本地单机local:应用名,可以在集

Spark快速数据处理 序&第一章

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Spark快速数据处理 序&第一章

mxnet-读取模型参数

#!/usr/bin/env python2 # -*- coding: utf-8 -*- """ Created on Fri Aug 10 16:13:29 2018 @author: myhaspl """ import mxnet as mx from mxnet import nd from mxnet import gluon from mxnet.gluon import nn from mxnet.gluon.data.visi

TensorFlow Saver 保存最佳模型 tf.train.Saver Save Best Model

TensorFlow Saver 保存最佳模型 tf.train.Saver Save Best Model Checkmate is designed to be a simple drop-in solution for a very common Tensorflow use-case: keeping track of the best model checkpoints during training. The BestCheckpointSaver is a wrapper arou