Random Forests预测森林植被类型
在Colorado北部,有一片森林,森林里中有多种类型的植被,有人已经将其大概总结出来了7种:
1 - Spruce/Fir
2 - Lodgepole Pine
3 - Ponderosa Pine
4 - Cottonwood/Willow
5 - Aspen
6 - Douglas-fir
7 - Krummholz
如果将它们的特征划,可以划分成12种,在这12中类型中,其中两种特征又可以划分成4和40中,这样可以任务这些植被有54中类型。现在有人已经根据样本的特性手动划分了植被类型一部分,现在需要自动识别未划分的植被类型。
(1)本文将基于随机森林算法在spark的集群上做模型系数的优化,来识别不同的植被类型。
1.1 数据的预处理:
在其给出的数据中存在54中数据类型如图:
很显然,这些特征属于类别型特征,其中比较特殊是wilderness_area和soil_type,它们是one-hot类型,有4和40个特征值。
val data=sparkSession.sparkContext.textFile(fileName).map(_.split(",").map(_.toDouble)).map(lin=>{LabeledPoint(line.last-1,Vectors.dense(line.init))})
val Array(trainData,cvData,testData)=data.randomSplit(Array(0.8,0.1,0.1));
这里我们用80%做训练集,10%做校验,10%做测试。
(2)建立模型和调节参数;
随机森林的模型val model=RandomForest.trainClassifier(trainData,numclass,map,numTrees,"auto",inpurity,maxDepth,maxBin)
说明:trainData:训练数据,LabeledPoint类型
numclass:分类数量
map(k->v) 类别k是v的特征
numTrees:建立数的棵树
auto:评估特征选择策略
inpuity:采用哪种信息纯度计算方式
maxDepth:数的最大深度
maxbin:数的最大同数
好了,下面来确定参数,参数确定当然是根据预测的准确度、召回率、错误率、、、
这里spark中有一个类MulticlassMetrics来帮我们计算,这样我们就不用自己写了。这个类有个方法accuracy就等到了准确率,调节参数过程如下:
val evaluations=for(numtrees<- 1 to 20;depth<- 20 to 30;bins<-2- to 300;inpuity<-Array("gini","entropy"))yield {val model=RandomForest.trainClassifier(trainData,7,Map(10->4,11->40),numtrees,"auto",inpuity,depth,bins);val trainAccuracy=desionTree3.getForestMetra(model,cvData).accuracy;(inpuity,depth,bins,trainAccuracy)
}evaluations.sortBy(_._4).reverse.take(10).foreach(println)}
最后的结果:
显然当深度取30,桶数取40时,准确率最高达到93.9%
Random Forests预测森林植被类型相关推荐
- 随机森林(Random Forests)介绍
1.决策树(Decision Tree) 决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别.常见的决策树算法有C4.5.ID3和CART.I ...
- 随机森林 (Random Forests) 简单介绍与应用
1 集成方法(Ensemble methods) 1.1 什么是集成方法 简单来说,集成方法 就是组合多个模型,以获得更好效果. 1.2 两种集成方法 平均法(averaging methods):也 ...
- 装袋法(bagging)和随机森林(random forests)的区别
bagging method 和random forests 一般都是应用在决策树中.这篇文章只讨论bagging method 和random forests 的区别. bagging method ...
- 【随机森林】random forests 简单介绍
Random Forest,顾名思义 Random 就是随机抽取: Forest 就是说这里不止一棵树,而由 一群决策树组成的一片森林 ,连起来就是用随机抽取的方法训练出一群决策树来完成分类任务. R ...
- R语言使用randomForest包构建随机森林模型(Random forests)、使用importance函数查看特征重要度、使用table函数计算混淆矩阵评估分类模型性能、包外错误估计OOB
R语言使用randomForest包中的randomForest函数构建随机森林模型(Random forests).使用importance函数查看特征重要度.使用table函数计算混淆矩阵评估分类 ...
- 统计学中的Bootstrap方法(Bootstrap抽样)用来训练bagging算法,如果随机森林Random Forests
统计学中的Bootstrap方法(Bootstrap抽样)用来训练bagging算法,如果随机森林Random Forests 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学 ...
- Random Forests C++实现:细节,使用与实验
Random Forests C++实现:细节,使用与实验 1. 随机森林简介 1.1 算法简介 1.2 随机特性 2. C++实现和使用 2.1 动机 2.2 细节 2.2.1 算法的参数(Hype ...
- random forest(随机森林)
转载自:http://lincccc.com/?p=47 Random Forest(s),随机森林,又叫Random Trees[2][3],是一种由多棵决策树组合而成的联合预测模型,天然可以作为快 ...
- Random Forests原理
Random Forests原理 分类: 机器学习2012-07-27 15:09 1085人阅读 评论(3) 收藏 举报 randomreference算法测试 转载自:http://lincccc ...
- 机器学习:Logistic回归处理用气象数据预测森林火灾的数据挖掘方法
文章目录 线性模型与回归 最小二乘与参数求解 1.一维数据: 2.多维数据 最大似然估计 Logistic回归 基本介绍 基于Logistic回归和Sigmoid函数的分类 基于最优化方法的最佳回归系 ...
最新文章
- YII2源码阅读:autoload_real.php 22~23行
- Redis源码剖析(一)服务器与客户端交互流程
- 原创 子网划分的讲解 例题加思路
- React Native开发总结(二)
- python的一些函数
- 一分钟了解阿里云产品:弹性伸缩五大热点技术问题分析
- 西子奥的斯服务器显示dlf,OTIS奥的斯XIOTIS西子奥的斯E311故障查询和故障代码(全).pdf...
- Android数据库SQLite的读写
- sqlserver如何修改服务器排序规则,修改sqlserver2008数据库的排序规则 (转)
- 爬取新浪滚动新闻--每个详情页标题以及内容
- 鹅厂、狗厂、猫厂、熊厂、鸟厂、粮厂
- android sqlite 示例,Android SQLite数据库操作示例
- python3爬取头条比基尼图片
- 机器学习之朴素贝叶斯算法详解
- 一位参加过IT培训班的学员经历和建议。
- Day134-136.尚品汇:平台属性接口、SPU、跨域问题、配置持久化、MinIO 分布式文件存储系统
- html 5抽奖特效,利用HTML5实现Canvas大转盘抽奖特效
- 【2018-11-30】中证500指数的估值详情
- Win10系统C盘之前还有20G空间突然红了爆满如何解决
- c语言输入三个商品的价格,若有一个大于100元或者总价大于200元,全部商品打9折,并完成付款和找零
热门文章
- 【181129】VC++ 屏幕截取(窗口截图、选区截图)、屏幕拾色器、放大镜源代码
- 37-基于51单片机智能温控风扇设计
- Linux lpadmin 命令 增加usb打印机
- Serializer序列化器----反序列化使用
- 搭建邮件服务器 linux,Linux局域网邮件服务器搭建
- Android好用的音乐,安卓手机音乐播放器哪个好用?十大最好音乐播放器介绍
- python uci_UCI机器学习数据库的Python API介绍
- UG二次开发入门--一个简单的示例
- R语言 正态性检验 Q-Q plot shapiro test
- rf扫描枪_RF枪是什么,怎么用,在哪用?