文档章节

用随机森林分类算法进行Iris 数据分类训练,是怎样的体验?

openfea
 openfea
发布于 2017/08/10 11:18
字数 1146
阅读 425
收藏 8
点赞 0
评论 2

MLlib是Spark的机器学习(ML)库,旨在简化机器学习的工程实践工作,并方便扩展到更大规模。

MLlib由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,同时还包括底层的优化原语和高层的管道API。

MLllib目前分为两个代码包:spark.mllib 包含基于RDD的原始算法API。

spark.ml ,提供了基于DataFrames高层次的API,可以用来构建机器学习管道,FEA-spk技术的机器学习就是基于spark.ml 包。

spark.ml 包,是基于DataFrame的,未来将成为Spark机器学习的主要API。它可以在分布式集群上进行大规模的机器学习模型训练,并且可以对数据进行可视化。

一、随机森林分类算法的介绍

随机森林顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入时,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对应分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。

使用Spark MLlib随机森林算法存在不足,需要改进!

具体来讲,使用Spark MLlib进行模型的训练,需要进行大量的数据转化,列聚合为向量等。非常麻烦,并且不能做数据的可视化。

而FEA-spk技术可以很好的解决这些问题。对模型进行训练只需要一句命令就行了,并且可以对结果数据进行可视化展示。

二、Iris 数据分类训练案例

下面列举一个用随机森林分类算法进行Iris 数据分类的例子。

1. 数据准备

原始的数据以及相应的说明可以到https://pan.baidu.com/s/1c2d0hpA下载。 我在这基础之上,增加了header信息。 

这里将下载好的数据放到hdfs上面进行读取。

2. Iris 数据进行训练的具体步骤

(1)要使用FEA-spk技术,首先要创建一个spk的连接,所有的操作都是以它为上下文进行的。在fea界面运行以下命令

(2)加载数据,数据在hdfs上面,数据的格式为csv文件格式,目录为/data/iris_data.txt

(3)使用ML_si方法将字符型的label变成index       

(4)将特征列的类型转化为double类型,因为spark.ml只支持double类型,使用 ML_double方法

(5)使用随机森林模型进行训练

在训练RandomForest模型的时候,我们需要设置好几个参数:

· maxBins

最大装箱数,为了近似统计变量,比如变量有100个值,我只分成10段去做统计,默认值是32;

· numTrees

森林里有几棵树,默认值是20;

· minInstancesPerNode

每个节点最少实例,默认值是1;

· minInfoGain

最小信息增益,默认值是0.0;

· maxDepth

最大树深度,默认值是5;

· maxMemoryInMB

最大内存MB单位,这个值越大,一次处理的节点划分就越多,默认值是256;

· cacheNodeIds

是否缓存节点id,缓存可以加速深层树的训练,默认值是False;

· checkpointInterval

检查点间隔,就是多少次迭代固化一次,默认值是10;

· impurity

随机森林有三种方式,entropy,gini,variance,回归肯定就是variance,默认值是gini;

· seed

采样种子,种子不变,采样结果不变,默认值None;

· featureSubsetStrategy

auto: 默认参数。让算法自己决定,每颗树使用几条数据。

使用的参数如下图所示

(6)对训练好的模型进行打分

可以看到准确率达到了97%

(7)将训练好的模型保存到hdfs上面,以供下次使用

这个非常实用,对于模型比较大的情况下,利用HDFS的分布式结构就可以提高加载性能。

(8)将hdfs上面保存的模型加载进来

(9)对加载后的模型做预测

其中prediction列就是预测的结果

以上就是使用FEA-spk技术进行机器学习的步骤,它非常适合数据分析处理大规模的数据,简单、强大、可视化,不懂Java\Python同样可以玩转Spark!

© 著作权归作者所有

共有 人打赏支持
openfea
粉丝 12
博文 86
码字总数 95615
作品 1
杭州
其他
加载中

评论(2)

openfea
openfea

引用来自“OSC首席键客”的评论

这标题是知乎体。。。看着不是很舒服。

回复@OSC首席键客 : 知乎受众都比较文青,所以才吸引人
OSC首席键客
OSC首席键客
这标题是知乎体。。。看着不是很舒服。
机器学习|决策树分类与python实现

目录: 1.决策树简介 2.决策树生成 a) 选择标准——熵 b) 信息增益——ID3算法 c) 信息增益率——C4.5算法 d) Gini系数——CART算法 e) 评价标准——评价函数 3.剪枝操作 a) 预剪枝 b) 后剪枝...

最会设计的科研狗 ⋅ 2017/06/14 ⋅ 0

决策树和随机森林学习笔记-欢迎补充

编者:以下资料来源于网络高质量博客,编者只是摘录精华再加上自己的理解进行补充。 决策树-基础概念 信息熵(熵、联合熵、条件熵、互信息) 「熵」是什么? 怎样以简单易懂的方式向其他人解...

陈司空 ⋅ 2017/04/14 ⋅ 0

决策树和随机森林

随机森林和GBDT算法的基础是决策树 而建立决策树的算法由很多,ID3,C4.5,CART等, ID3: ID3算法的基本流程是:首先找出最有判别力的属性,把样例分成多个子集,每个子集又选择最有判别力的...

michaelgbw ⋅ 2017/05/17 ⋅ 0

《R语言实战》第四部分第十七章-分类学习笔记

前面一章的内容主要是对数据进行聚类,可能是两类,也可能是三类,甚至更多,而分类一般是指一分为二。举几个例子: 根据个人信息和财务历史记录预测其是否会还贷; 根据重症病人的症状和生命...

Datacruiser ⋅ 2017/07/16 ⋅ 0

算法与数据结构-【转载】全解机器学习3大分类6大算法的优势和劣势

在机器学习中,目标要么是预测(prediction),要么是聚类(clustering)。本文重点关注的是预测。预测是从一组输入变量来预估输出变量的值的过程。例如,得到有关房子的一组特征,我们可以预...

namelessfighter ⋅ 05/28 ⋅ 0

kNN(K-Nearest Neighbor)最邻近规则分类

KNN最邻近规则,主要应用领域是对未知事物的识别,即判断未知事物属于哪一类,判断思想是,基于欧几里得定理,判断未知事物的特征和哪一类已知事物的的特征最接近; K最近邻(k-Nearest Neig...

最帅的刘先生 ⋅ 2016/12/23 ⋅ 0

在Python 3中使用深度森林(Deep Forest)进行分类

深度森林(Deep Forest)是周志华教授和冯霁博士在2017年2月28日发表的论文《Deep Forest: Towards An Alternative to Deep Neural Networks》中提出来的一种新的可以与深度神经网络相媲美的基...

洛荷 ⋅ 2017/10/02 ⋅ 0

决策树和随机森林以及bagging vs boosting

前言 信息是用来消除随机不确定性的东西。 ------香农 随机森林的特点这里就不说了,它就相当于机器学习领域的Leatherman(多面手),你几乎可以把任何东西扔进去,它基本上都是可供使用的。...

michaelgbw ⋅ 2017/04/07 ⋅ 0

机器学习中的算法——决策树模型组合之随机森林与GBDT

前言: 决策树这种算法有着很多良好的特性,比如说训练时间复杂度较低,预测的过程比较快速,模型容易展示(容易将得到的决策树做成图片展示出来)等。但是同时,单决策树又有一些不好的地方...

云栖希望。 ⋅ 2017/12/04 ⋅ 0

机器学习之决策树模型组合理解

前言: 决策树这种算法有着很多良好的特性,比如说训练时间复杂度较低,预测的过程比较快速,模型容易展示(容易将得到的决策树做成图片展示出来)等。但是同时,单决策树又有一些不好的地方...

m0epnwstyk4 ⋅ 2017/12/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

使用 vue-cli 搭建项目

vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli 一、 安装 node.js 首先需要安装node环境,可以直接到中...

初学者的优化 ⋅ 22分钟前 ⋅ 0

设计模式 之 享元模式

设计模式 之 享元模式 定义 使用共享技术来有效地支持大量细粒度对象的复用 关键点:防止类多次创建,造成内存溢出; 使用享元模式来将内部状态与外部状态进行分离,在循环创建对象的环境下,...

GMarshal ⋅ 37分钟前 ⋅ 0

SpringBoot集成Druid的最简单的小示例

参考网页 https://blog.csdn.net/king_is_everyone/article/details/53098350 建立maven工程 Pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM......

karma123 ⋅ 今天 ⋅ 0

Java虚拟机基本结构的简单记忆

Java堆:一般是放置实例化的对象的地方,堆分新生代和老年代空间,不断未被回收的对象越老,被放入老年代空间。分配最大堆空间:-Xmx 分配初始堆空间:-Xms,分配新生代空间:-Xmn,新生代的大小一...

算法之名 ⋅ 今天 ⋅ 0

OSChina 周日乱弹 —— 这么好的姑娘都不要了啊

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @TigaPile :分享曾惜的单曲《讲真的》 《讲真的》- 曾惜 手机党少年们想听歌,请使劲儿戳(这里) @首席搬砖工程师 :怎样约女孩子出来吃饭,...

小小编辑 ⋅ 今天 ⋅ 8

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

Spring Bean的生命周期

前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模...

素雷 ⋅ 今天 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部