SparkMlib 之随机森林及其案例
文章目录
- 什么是随机森林?
- 随机森林的优缺点
- 随机森林示例——鸢尾花分类
什么是随机森林?
随机森林算法是机器学习、计算机视觉等领域内应用极为广泛的一个算法,它不仅可以用来做分类,也可用来做回归即预测,随机森林机由多个决策树构成,相比于单个决策树算法,它分类、预测效果更好,不容易出现过度拟合的情况。
常应用于以下类型的场景:
- 预测用户贷款是否能够按时还款;
- 预测用户是否会购买某件商品等等
官网:分类和回归
随机森林的优缺点
优点:
可以处理高纬度的数据;
训练之前不需要特意的做特征选择;
建立很多树,预防了过拟合风险;
缺点:
计算量相对于决策树很大,性能开销很大。
可能会导致有些数据集没有训练到,但这种几率很小。
分裂的时候,偏向于选择取值较多的特征。
随机森林示例——鸢尾花分类
数据集下载:
链接:
https://pan.baidu.com/s/1AshgNxx1wOWhLgKxgjrZww?pwd=lz3l 提取码:
lz3l
数据集介绍:
iris.scale.txt
是 libsvm
格式的鸢尾花数据集,共有五个字段。第一个为标签字段,后四个为特征字段。
libsvm
格式参考:机器学习:libsvm数据格式
将数据集中的随机百分之70作为训练集,剩余的作为测试集。
使用 SparkSQL 的方式读取 libsvm
格式的文件会自动生成 label
和 features
结构的数据,如下所示:
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 之随机森林及其案例相关推荐
- spark 随机森林算法案例实战
随机森林算法 由多个决策树构成的森林,算法分类结果由这些决策树投票得到,决策树在生成的过程当中分别在行方向和列方向上添加随机过程,行方向上构建决策树时采用放回抽样(bootstraping)得到训练数 ...
- 随机森林的java算法_spark 随机森林算法案例实战
随机森林算法 由多个决策树构成的森林,算法分类结果由这些决策树投票得到,决策树在生成的过程当中分别在行方向和列方向上添加随机过程,行方向上构建决策树时采用放回抽样(bootstraping)得到训练数 ...
- PySpark——随机森林分类案例
PySpark--随机森林分类案例 一.随机森林 随机森林案例 """ Random Forest Classifier Example. ""&qu ...
- sklearn分类器算法:决策树与随机森林及案例分析
分类算法之决策树 决策树是一种基本的分类方法,当然也可以用于回归.我们一般只讨论用于分类的决策树.决策树模型呈树形结构.在分类问题中,表示基于特征对实例进行分类的过程,它可以认为是if-then规则的 ...
- PIE-engine 教程 ——随机森林监督分类案例(河北安国市为例)
本次举一个简答的案例,通过对一个县级市进行监督分类采样,然后进行耕地.林地.园地和其它的划分,除此之外,我们还需要掌握随机样本点的采集,混淆矩阵以及精度计算等问题.首先我们看一下随机样本点的选取函数: ...
- 集成算法-随机森林与案例实战-泰坦尼克获救预测
集成算法-随机森林 Ensemble learning 目的:让机器学习效果更好,单个不行,群殴走起 Bagging:训练多个分类器取平均 f ( x ) = 1 / M ∑ m = 1 M f m ...
- Spark 随机森林算法原理、源码分析及案例实战
图 1. Spark 与其它大数据处理工具的活跃程度比较 回页首 环境要求 操作系统:Linux,本文采用的 Ubuntu 10.04,大家可以根据自己的喜好使用自己擅长的 Linux 发行版 Jav ...
- 机器学习基础(四)——决策树与随机森林
决策树与随机森林 文章目录 决策树与随机森林 一.知识概要(一) 二.决策树使用的算法 三.sklearn决策树API 四.决策树的案例 1. 数据清洗 2. 特征工程 3. 调用决策树API 五.集 ...
- 分类算法-决策树、随机森林
分类算法-决策树.随机森林 决策树 1. 认识决策树 决策树模型呈树形结构.在分类问题中,表示基于特征对实例进行分类的过程,它可以认为是if-then规则的集合.在决策树的结构中,每一个实例都被一条路 ...
最新文章
- 伯克利大神一人投中16篇!ICLR 2021论文接收统计出炉
- linux下.rar的文件,Linux下.rar压缩文件处理 (RAR 4.11 for linux )
- Docker Swarm删除节点
- why wechat is not a good place for the learning, but csdn is
- docker 内部ping不通宿主机_Docker容器数据管理
- 安装在谷歌axure小工具
- 多线程设置操作时间间隔_听说,有位Java程序员学完这59道多线程面试题之后,直接面上阿里...
- NodeJS配置国内源
- Vmware怎样使用nat和桥接方式解决虚拟机联网问题
- Git 和 SVN之间的五个基本区别
- TSC条码打印机亮红灯解决办法!
- 黑客攻防实战入门(第三版)
- 什么是NP完全问题?
- MATLAB 画常见二次曲面汇总
- HCDA学习笔记(二)
- pano2vr怎么制作漫游_全景图如何制作?Pano2VR制作FLASH全景图图文教程(附Pano2VR下载)...
- 迪杰斯特拉算法(dijkstra)
- 本地版BLAST使用
- Day10-服务调用-删除课程的同时删除所有小节视频-p158、p159
- Kong的插件:Request Size Limiting