Spark2 ML 学习札记
摘要:
1.pipeline 模式
1.1相关概念
1.2代码示例
2.特征提取,转换以及特征选择
2.1特征提取
2.2特征转换
2.3特征选择
3.模型选择与参数选择
3.1 交叉验证
3.2 训练集-测试集 切分
4.spark新增SparkSession与DataSet
内容:
1.pipeline 模式
1.1相关概念
DataFrame是来自Spark SQL的ML DataSet 可以存储一系列的数据类型,text,特征向量,Label和预测结果
Transformer:将DataFrame转化为另外一个DataFrame的算法,通过实现transform()方法
Estimator:将DataFrame转化为一个Transformer的算法,通过实现fit()方法
PipeLine:将多个Transformer和Estimator串成一个特定的ML Wolkflow
Parameter:Tansformer和Estimator共用同一个声明参数的API

上图中蓝色标识的是Transformer(Tokenizer and HashingTF),红色标识的是Estimator(LogisticRegression)
1.2代码示例
val tokenizer = new Tokenizer()
.setInputCol("text")
.setOutputCol("words")
val hashingTF = new HashingTF()
.setNumFeatures(1000)
.setInputCol(tokenizer.getOutputCol)
.setOutputCol("features")
val lr = new LogisticRegression()
.setMaxIter(10)
.setRegParam(0.01)
val pipeline = new Pipeline()
.setStages(Array(tokenizer, hashingTF, lr)) // Fit the pipeline to training documents.
val model = pipeline.fit(training)
// Make predictions on test documents.
model.transform(test)
.select("id", "text", "probability", "prediction")
.collect()
.foreach { case Row(id: Long, text: String, prob: Vector, prediction: Double) =>
println(s"($id, $text) --> prob=$prob, prediction=$prediction")
}
2.特征提取,转换以及特征选择
2.1特征提取
- TF-IDF:提取文档的关键词
- Word2Vec:将文档转换成词向量
- CountVectorizer:向量值计数
2.2特征转换
- Tokenizer:分词器
- StopWordsRemover:停词表 注:The list of stopwords is specified by the
stopWordsparameter. Default stop words for some languages are accessible by callingStopWordsRemover.loadDefaultStopWords(language) - n-gram
- Binarizer
- PCA:主成分分析,一种降维方法,可以提取出区分度比较高的特征,并计算权重
- PolynomialExpansion:多项式核转换
- Discrete Cosine Transform (DCT)
- StringIndexer
- IndexToString
- OneHotEncoder:独热编码
- VectorIndexer
- -----------------------------------------------------------------标准化和归一化-------------------------------------------------------------------------------------
- Normalizer:向量正则化处理,参见http://www.cnblogs.com/arachis/p/Regulazation.html
- StandardScaler:标准化方法1:( x-mean ) / standard deviation
- MinMaxScaler:标准化方法2:

- MaxAbsScaler 标准化方法3: x / abs(max)
- ----------------------------------------------------------------离散化-----------------------------------------------------------------------------------------------
- Bucketizer:分区,可指定分区的上下界
- QuantileDiscretizer:等宽离散化
- ----------------------------------------------------------------交叉特征---------------------------------------------------------------------------------------------
- ElementwiseProduct
- ----------------------------------------------------------------SQL-------------------------------------------------------------------------------------------------
- SQLTransformer
- VectorAssembler
2.3特征选择
- VectorSlicer:截取指定的特征,可以是索引,也可以是特征标识
- RFormula:RFormula用于将数据中的字段通过R语言的Model Formulae转换成特征值,输出结果为一个特征向量和Double类型的label。R文档
- ChiSqSelector:ChiSqSelector用于使用卡方检验来选择特征(降维)。
3.模型选择与参数选择
3.1 交叉验证
将数据分为K分,每次测评选取一份作为测试集,其余为训练集;
3.2 训练集-测试集 切分
根据固定的比例将数据分为测试集和训练集
代码示例:
val cv = new CrossValidator()
.setEstimator(pipeline)
.setEvaluator(new BinaryClassificationEvaluator)
.setEstimatorParamMaps(paramGrid)
.setNumFolds(2) // Use 3+ in practice 4.spark新增SparkSession与DataSet http://blog.csdn.net/yhao2014/article/details/52215966
http://blog.csdn.net/u013063153/article/details/54615378
http://blog.csdn.net/lsshlsw/article/details/52489503
Spark2 ML 学习札记的更多相关文章
- BITED-Windows8应用开发学习札记之二:Win8应用常用视图设计
感觉自我表述能力有欠缺,技术也不够硬,所以之后的Windows8应用开发学习札记的文章就偏向于一些我认为较难的地方和重点了多有抱歉. 上节课是入门,这节课就已经开始进行视图设计了. Windows应用 ...
- SQL菜鸟学习札记(一)
刚开始学SQL,从最基础的语句开始写,用一个LOL数据库做实验.目前使用的工具是MySQL Workbench,感觉比较顺手,界面没花多久时间就读懂的差不多了,所以目前就使用这个工具来做SQL的学习了 ...
- java学习札记
java学习札记 0x0 学习原因 本来打算大三再去跟着课程去学习java的,但是现在题目越来越偏向java,所以迫于无奈开启了java的学习篇章,同时也正好写个笔记总结下自己学习一门语言的流程. ...
- Masonry学习札记
Masnory学习札记 在之前的文章里有草草提到过Masonry自动布局,可这么重要第三方布局框架的怎么可以怎么随便带过呢!昨天在完成页面的时候刚好遇到了被Masorny功能惊叹的部分,所以趁热打铁写 ...
- Java 学习札记(三)免安装版TomCat中tomcat6w.exe的运行
1.使用环境 很多时候我们用的是官网的解压免安装版的Tomcat,相比安装Tomcat除了少了安装步骤以外还少了tomcat6w.exe运行所需要的环境变量,所以一般Java开发免安装版的已经足够使用 ...
- [ML学习笔记] XGBoost算法
[ML学习笔记] XGBoost算法 回归树 决策树可用于分类和回归,分类的结果是离散值(类别),回归的结果是连续值(数值),但本质都是特征(feature)到结果/标签(label)之间的映射. 这 ...
- [ML学习笔记] 朴素贝叶斯算法(Naive Bayesian)
[ML学习笔记] 朴素贝叶斯算法(Naive Bayesian) 贝叶斯公式 \[P(A\mid B) = \frac{P(B\mid A)P(A)}{P(B)}\] 我们把P(A)称为"先 ...
- [ML学习笔记] 决策树与随机森林(Decision Tree&Random Forest)
[ML学习笔记] 决策树与随机森林(Decision Tree&Random Forest) 决策树 决策树算法以树状结构表示数据分类的结果.每个决策点实现一个具有离散输出的测试函数,记为分支 ...
- [ML学习笔记] 回归分析(Regression Analysis)
[ML学习笔记] 回归分析(Regression Analysis) 回归分析:在一系列已知自变量与因变量之间相关关系的基础上,建立变量之间的回归方程,把回归方程作为算法模型,实现对新自变量得出因变量 ...
随机推荐
- docker——容器安装tomcat
写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...
- ABP文档 - 后台作业和工作者
文档目录 本节内容: 简介 后台作业 关于作业持久化 创建一个后台作业 在队列里添加一个新作业 默认的后台作业管理器 后台作业存储 配置 禁用作业执行 Hangfire 集成 后台工作者 创建一个后台 ...
- Power BI官方视频(3) Power BI Desktop 8月份更新功能概述
Power BI Desktop 8月24日发布了更新版本.现将更新内容翻译整理如下,可以根据后面提供的链接下载最新版本使用. 1.主要功能更新 1.1 数据钻取支持在线版 以前的desktop中进行 ...
- Android 工具-adb
Android 工具-adb 版权声明:本文为博主原创文章,未经博主允许不得转载. Android 开发中, adb 是开发者经常使用的工具,是 Android 开发者必须掌握的. Android D ...
- Android—自定义开关按钮实现
我们在应用中经常看到一些选择开关状态的配置文件,做项目的时候用的是android的Switch控件,但是感觉好丑的样子………… 个人认为还是自定义的比较好,先上个效果图:
- TabLayout + ViewPager
一.实现思路 1.在build.gradle中添加依赖,例如: compile 'com.android.support:support-v4:23.4.0'compile 'com.android. ...
- 用Swagger生成接口文档
Swagger简介 在系统设计的时候,各个应用之间往往是通过接口进行交互的.因此接口的定义在整个团队中就变得尤为重要.我们可以把接口的规范用接口描述语言进行描述,然后Swagger可以根据我们定义的接 ...
- 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'T_Shell' 中的标识列插入显式值。
--允许将显示值插入表的标识列中-ON:允许 OFF:不允许set identity_insert T_shell ONset identity_insert T_Shell OFF
- OpenGL ES: Array Texture初体验
[TOC] Array Texture这个东西的意思是,一个纹理对象,可以存储不止一张图片信息,就是说是是一个数组,每个元素都是一张图片.这样免了频繁地去切换当前需要bind的纹理,而且可以节省系统资 ...
- VS2013中的MVC5模板部署到mono上的艰辛历程
部署环境:CentOS7 + Mono 3.10 + Jexus 5.6 在Xamarin.Studio创建的asp.net项目,部署过程非常顺利,没有遇到什么问题:但在VS2013中创建的asp.n ...