文章目录

  • 什么是随机森林?
  • 随机森林的优缺点
  • 随机森林示例——鸢尾花分类

什么是随机森林?

随机森林算法是机器学习、计算机视觉等领域内应用极为广泛的一个算法,它不仅可以用来做分类,也可用来做回归即预测,随机森林机由多个决策树构成,相比于单个决策树算法,它分类、预测效果更好,不容易出现过度拟合的情况。

常应用于以下类型的场景:

  1. 预测用户贷款是否能够按时还款;
  2. 预测用户是否会购买某件商品等等

官网:分类和回归

随机森林的优缺点

优点:

  1. 可以处理高纬度的数据;

  2. 训练之前不需要特意的做特征选择;

  3. 建立很多树,预防了过拟合风险;

缺点:

  1. 计算量相对于决策树很大,性能开销很大。

  2. 可能会导致有些数据集没有训练到,但这种几率很小。

  3. 分裂的时候,偏向于选择取值较多的特征。

随机森林示例——鸢尾花分类

数据集下载:

链接:
https://pan.baidu.com/s/1AshgNxx1wOWhLgKxgjrZww?pwd=lz3l 提取码:
lz3l

数据集介绍:

iris.scale.txtlibsvm 格式的鸢尾花数据集,共有五个字段。第一个为标签字段,后四个为特征字段。

libsvm 格式参考:机器学习:libsvm数据格式

将数据集中的随机百分之70作为训练集,剩余的作为测试集。

使用 SparkSQL 的方式读取 libsvm 格式的文件会自动生成 labelfeatures 结构的数据,如下所示:

val data: DataFrame = spark.read.format("libsvm").load("iris.scale.txt")data.show()

需求实现:

import org.apache.spark.ml.classification.{RandomForestClassificationModel, RandomForestClassifier}
import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator
import org.apache.spark.ml.feature._
import org.apache.spark.ml.{Pipeline, PipelineModel}
import org.apache.spark.sql.{DataFrame, SparkSession}object Iris {def main(args: Array[String]): Unit = {val spark: SparkSession = SparkSession.builder().appName("Iris").master("local[*]").getOrCreate()// 加载 libsvm 格式文件的数据val data: DataFrame = spark.read.format("libsvm").load("C:\\Users\\Administrator\\Desktop\\iris.scale.txt")data.show()// 1.构建标签列转换对象val labelIndexer: StringIndexerModel = new StringIndexer().setInputCol("label").setOutputCol("indexedLabel").fit(data)// 2.构建特征列转换对象,设置特征列数量val featureIndexer: VectorIndexerModel = new VectorIndexer().setInputCol("features").setOutputCol("indexedFeatures").setMaxCategories(4).fit(data)// 3.将随机百分之70作为训练集,其余为测试集val Array(trainingData, testData) = data.randomSplit(Array(0.7, 0.3))// 4.创建随机森林对象,设置标签列与特征列以及决策树的个数val rf: RandomForestClassifier = new RandomForestClassifier().setLabelCol("indexedLabel").setFeaturesCol("indexedFeatures").setNumTrees(10)// 5.设置预测列标签val labelConverter: IndexToString = new IndexToString().setInputCol("prediction").setOutputCol("predictedLabel").setLabels(labelIndexer.labelsArray(0))// 6.管道组装val pipeline: Pipeline = new Pipeline().setStages(Array(labelIndexer, featureIndexer, rf, labelConverter))// 7.模型训练val model: PipelineModel = pipeline.fit(trainingData)// 8.模型预测val predictions: DataFrame = model.transform(testData)// 9.模型评估predictions.select("predictedLabel", "label", "features").show()// 10.创建错误率的计算对象val evaluator: MulticlassClassificationEvaluator = new MulticlassClassificationEvaluator().setLabelCol("indexedLabel").setPredictionCol("prediction").setMetricName("accuracy")// 11.计算错误率val accuracy: Double = evaluator.evaluate(predictions)println(s"Test Error = ${(1.0 - accuracy)}")// 12.打印随机森林模型val rfModel: RandomForestClassificationModel = model.stages(2).asInstanceOf[RandomForestClassificationModel]println(s"Learned classification forest model:\n ${rfModel.toDebugString}")}}

SparkMlib 之随机森林及其案例相关推荐

  1. spark 随机森林算法案例实战

    随机森林算法 由多个决策树构成的森林,算法分类结果由这些决策树投票得到,决策树在生成的过程当中分别在行方向和列方向上添加随机过程,行方向上构建决策树时采用放回抽样(bootstraping)得到训练数 ...

  2. 随机森林的java算法_spark 随机森林算法案例实战

    随机森林算法 由多个决策树构成的森林,算法分类结果由这些决策树投票得到,决策树在生成的过程当中分别在行方向和列方向上添加随机过程,行方向上构建决策树时采用放回抽样(bootstraping)得到训练数 ...

  3. PySpark——随机森林分类案例

    PySpark--随机森林分类案例 一.随机森林 随机森林案例 """ Random Forest Classifier Example. ""&qu ...

  4. sklearn分类器算法:决策树与随机森林及案例分析

    分类算法之决策树 决策树是一种基本的分类方法,当然也可以用于回归.我们一般只讨论用于分类的决策树.决策树模型呈树形结构.在分类问题中,表示基于特征对实例进行分类的过程,它可以认为是if-then规则的 ...

  5. PIE-engine 教程 ——随机森林监督分类案例(河北安国市为例)

    本次举一个简答的案例,通过对一个县级市进行监督分类采样,然后进行耕地.林地.园地和其它的划分,除此之外,我们还需要掌握随机样本点的采集,混淆矩阵以及精度计算等问题.首先我们看一下随机样本点的选取函数: ...

  6. 集成算法-随机森林与案例实战-泰坦尼克获救预测

    集成算法-随机森林 Ensemble learning 目的:让机器学习效果更好,单个不行,群殴走起 Bagging:训练多个分类器取平均 f ( x ) = 1 / M ∑ m = 1 M f m ...

  7. Spark 随机森林算法原理、源码分析及案例实战

    图 1. Spark 与其它大数据处理工具的活跃程度比较 回页首 环境要求 操作系统:Linux,本文采用的 Ubuntu 10.04,大家可以根据自己的喜好使用自己擅长的 Linux 发行版 Jav ...

  8. 机器学习基础(四)——决策树与随机森林

    决策树与随机森林 文章目录 决策树与随机森林 一.知识概要(一) 二.决策树使用的算法 三.sklearn决策树API 四.决策树的案例 1. 数据清洗 2. 特征工程 3. 调用决策树API 五.集 ...

  9. 分类算法-决策树、随机森林

    分类算法-决策树.随机森林 决策树 1. 认识决策树 决策树模型呈树形结构.在分类问题中,表示基于特征对实例进行分类的过程,它可以认为是if-then规则的集合.在决策树的结构中,每一个实例都被一条路 ...

最新文章

  1. 伯克利大神一人投中16篇!ICLR 2021论文接收统计出炉
  2. linux下.rar的文件,Linux下.rar压缩文件处理 (RAR 4.11 for linux )
  3. Docker Swarm删除节点
  4. why wechat is not a good place for the learning, but csdn is
  5. docker 内部ping不通宿主机_Docker容器数据管理
  6. 安装在谷歌axure小工具
  7. 多线程设置操作时间间隔_听说,有位Java程序员学完这59道多线程面试题之后,直接面上阿里...
  8. NodeJS配置国内源
  9. Vmware怎样使用nat和桥接方式解决虚拟机联网问题
  10. Git 和 SVN之间的五个基本区别
  11. TSC条码打印机亮红灯解决办法!
  12. 黑客攻防实战入门(第三版)
  13. 什么是NP完全问题?
  14. MATLAB 画常见二次曲面汇总
  15. HCDA学习笔记(二)
  16. pano2vr怎么制作漫游_全景图如何制作?Pano2VR制作FLASH全景图图文教程(附Pano2VR下载)...
  17. 迪杰斯特拉算法(dijkstra)
  18. 本地版BLAST使用
  19. Day10-服务调用-删除课程的同时删除所有小节视频-p158、p159
  20. Kong的插件:Request Size Limiting

热门文章

  1. 为了庆祝五一国际劳动节的到来
  2. iapp退出软件按钮代码_吱呀怎么退出登录-吱呀APP退出登录的方法
  3. KubeEdge+Fabedge集成环境搭建教程
  4. NeuroImage:暴力的隐式创伤—异常运动振荡脑活动与创伤后应激症状有关
  5. 计算机对幼儿教育发展的优点,音乐教育对幼儿发展的影响
  6. 少女口述:我跟一个小混混那不堪回首的感情
  7. 三分之一的程序猿之创业组队与打怪升级
  8. 趣题:等腰直角三角形与勾股定理形式的条件
  9. STM32机器人控制开发教程No.3 使用遥控控制电机/舵机(基于HAL库)
  10. 休闲零食生产企业如何做好供应链管理?