文档章节

spark mllib 决策树 DT

ericSM
 ericSM
发布于 2016/07/29 15:34
字数 890
阅读 348
收藏 2

决策树的优点:

  1. 可以生成可以理解的规则。
  2. 计算量相对来说不是很大。
  3. 可以处理连续和种类字段。
  4. 决策树可以清晰的显示哪些字段比较重要

决策树的缺点:

  1. 对连续性的字段比较难预测。
  2. 对有时间顺序的数据,需要很多预处理的工作。
  3. 当类别太多时,错误可能就会增加的比较快。
  4. 一般的算法分类的时候,只是根据一个字段来分类。

出去玩记录表

出去玩 温度 起风 下雨 湿度
1 1 0 0 1
0 1 0 1 1
0 0 1 0 0
1 1 1 0 0
1 1 0 0 0
1 1 1 0 0

 

运行代码如下

package spark.DT

import org.apache.spark.mllib.tree.DecisionTree
import org.apache.spark.mllib.util.MLUtils
import org.apache.spark.{SparkContext, SparkConf}

/**
  * 决策树使用案例-出去玩
  * **********************************决策树********************************
  * 决策树是一种监督学习,监督学习,就是给定一对样本,每个样本都有一组属性和一个类别,
  * 这些类别是事先确定的,那么通过学习得到一个分类器,这个分类器能够对新出现的对象给
  * 出正确的分类.其原理是:从一组无序无规则的因素中归纳总结出符合要求的分类规则.
  *
  * 决策树算法基础:信息熵,ID3
  * 信息熵:对事件中不确定的信息的度量.一个事件或属性中,其信息熵越大,含有的不确定信
  *   息越大,对数据分析的计算也越有益.故,信息熵的选择总是选择当前事件中拥有最高
  *   信息熵的那个属性作为待测属性.
  * ID3:一种贪心算法,用来构造决策树.以信息熵的下降速度作为测试属性的标准,即在每个
  *   节点选取还尚未被用来划分的,具有最高信息增益的属性作为划分标准,然后继续这个过程,
  *   直到生成的决策树能完美分类训练样例.
  *
  * 使用场景:任何一个只要符合 key-value 模式的分类数据都可以根据决策树进行推断.
  *
  * 决策树用来预测的对象是固定的,丛根到叶子节点的一条特定路线就是一个分类规则,决定
  * 一个分类算法和结果.
  *
  * **********************************决策树********************************
  * Created by eric on 16-7-19.
  */
object DT {
  val conf = new SparkConf()                                     //创建环境变量
    .setMaster("local")                                             //设置本地化处理
    .setAppName("ZombieBayes")                              //设定名称
  val sc = new SparkContext(conf)

  def main(args: Array[String]) {
    val data = MLUtils.loadLibSVMFile(sc, "./src/main/spark/DT/DTree.txt")

    val numClasses = 2//分类数量
    val categorycalFeaturesInfo = Map[Int, Int]()//设定输入格式
    val impurity = "entropy" //设定信息增益计算方式
    val maxDepth = 5 //最大深度
    val maxBins = 3 //设定分割数据集

    val model = DecisionTree.trainClassifier(
      data,//输入数据集
      numClasses,//分类数量,本例只有出去,不出去,共两类
      categorycalFeaturesInfo,// 属性对格式,这里是单纯的键值对
      impurity,//计算信息增益形式
      maxDepth,// 树的高度
      maxBins//能够分裂的数据集合数量
    )

    println(model.topNode)
    println(model.numNodes)//5
    println(model.algo)//Classification
  }
}
DTree.txt
1 1:1 2:0 3:0 4:1
0 1:1 2:0 3:1 4:1
0 1:0 2:1 3:0 4:0
1 1:1 2:1 3:0 4:0
1 1:1 2:0 3:0 4:0
1 1:1 2:1 3:0 4:0

结果如下

id = 1, isLeaf = false, predict = 1.0 (prob = 0.6666666666666666), impurity = 0.9182958340544896, split = Some(Feature = 0, threshold = 0.0, featureType = Continuous, categories = List()), stats = Some(gain = 0.31668908831502096, impurity = 0.9182958340544896, left impurity = 0.0, right impurity = 0.7219280948873623)

5

Classification

 

 

 

 

© 著作权归作者所有

ericSM
粉丝 18
博文 142
码字总数 154379
作品 0
南京
项目经理
私信 提问
加载中

评论(0)

基于Spark的机器学习实践 (二) - 初识MLlib

1 MLlib概述 1.1 MLlib 介绍 ◆ 是基于Spark core的机器学习库,具有Spark的优点 ◆ 底层计算经过优化,比常规编码效率往往要高 ◆ 实现了多种机器学习算法,可以进行模型训练及预测 1.2 Spark ...

javaedge
2019/04/09
0
0
Spark之获取GBT二分类函数的概率值

  在Spark中,GBT(Gradient Boost Trees,提升树)函数用于实现机器学习中的提升树算法,目前仅支持二分类算法。笔者在实际工作中需要获得其预测的概率值,无奈该函数没有相应的方法。  ...

jclian91
2017/10/09
0
0
Spark的39个机器学习库-中文

//Apache Spark 本身// 1.MLlib >AMPLab Spark最初诞生于伯克利 AMPLab实验室,如今依然还是AMPLab所致力的项目,尽管这些不处于Apache Spark Foundation中,但是依然在你日常的github项目中...

MoksMo
2015/11/04
965
0
Spark2.1.0之模块设计

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/beliefer/article/details/80386736 在阅读本文之前,读者最好已经阅读了《Spark2.1.0之初识Spark》和《Spark...

泰山不老生
2018/06/05
0
0
Zinc server is not available at port 3030 - reverting to normal incremental compile

Building Spark Project ML Library 1.2.1 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-enforcer-plugin:1.3.1:enforce (en......

知行合一1
2017/04/08
1.3K
0

没有更多内容

加载失败,请刷新页面

加载更多

21天完美搞定Vue框架技术(第3天)

前言: 上一节我们主要学的是【选项合并】,了解了初始化阶段各个选项的合并策略, 本节课我们来学一下【数据代理】这个知识点。 1、数据代理的定义 数据代理,也叫作数据劫持。有两个核心作...

有鱼是只猫
29分钟前
31
0
OSChina 周二乱弹 —— 一山里不容二猫

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《数え歌》- 池田綾子 手机党少年们想听歌,请使劲儿戳(这里) @诺墨 :哈哈哈哈...

小小编辑
43分钟前
43
1
敏捷开发验收评审会议

迭代验收评审是Scrum中的重要活动之一,迭代验收评审会议召开过程是否符合敏捷原则,实践是否贴近实际,参照以下:要点一:参加迭代验收评审会议的角色是否完整和投入 ●敏捷团队所有...

沐沐爸比
今天
43
0
js 获取文件本地内存路径

URL.createObjectURL(file)

DrChenXX
今天
51
0
CentOS 6.5 安装 Hadoop 集群【未完】

1、安装 CentOS 6.5 2、关闭 iptables 3、关闭 suliunx 4、修改 IP 4、修改 hostname 5、修改 hosts 6、SSH 免密 7、JDK(1.8)安装 华为镜像直达 8、...

产品哥
今天
59
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部