这几天在网上看到一篇关于随机森林的文章,感觉挺有趣的,就在这简单地总结了一下随机森林,并使用matlab来仿真实现。
随机森林
随机森林使用了元胞自动机模型,其中每个元胞有三种状态:无树、着火、有树。其中每个元胞的演变规则如下:
(1)表示有树状态的元胞如果四周有一个元胞表示着火状态,则下一时刻这个元胞位置变为着火状态;
(2)已经着火的元胞下一时刻变为空元宝;
(3)每一个表示有树状态的元胞以一个很小的概率变为着火状态;
(4)每一个空元胞以一定的概率变为有树状态(表示种树)
算法设计策略
在给出代码之前,我想说一下算法的设计策略,尤其是怎样知道一棵树周围的元胞状态。使用一个n*n的矩阵senlin表示森林,其中认为第一列的元胞与最后一列的元胞是连在一起的,第一行的元胞与最后一行的元胞也是连在一起的。元胞的三种状态表示如下: 0:无树;1:着火 2:有数。在判断一棵树是下一时刻否会着火时,基本的想法是判断每一个有树状态的元胞相邻的四个元胞是否会有表示着火状态的,即是否会有1的元胞,我们的做法是先得到每一个位置上面相邻的元胞的表示矩阵,实现这一步只需要将最后一行拿到第一行的位置,其余行往下移动一行即可,同理,我们可以得到每一个位置下面、左边、右边相邻的元胞的表示矩阵。将这四个矩阵相加起来得到一个矩阵,如果某个位置的元素大于0,则表示这个位置会着火,等于0表示不会着火。
matlab实现随机森林的代码

close;
clc,clear;
n=300;
senlin=zeros(300,300);
pfire=0.000001;%发生火灾的概率
pplant=0.001;%种树的概率
up=[n 1:n-1];%这两个矩阵用于计算一棵数是否会发生火灾时使用
right=[2:n 1];
img=image(cat(3,senlin,senlin,senlin));
m=annotation('textbox',[0.1 0.1 0.1 0.1],'LineStyle','-','LineWidth',12,'string','123');
%状态说明:0;无树 1:着火 3:有树木
%开始仿真
for i=1:10000temp=(senlin(up,:)==1)+(senlin(right,:)==1)+(senlin(:,up)==1)+(senlin(:,right)==1);%算出每个位置四周是否会有着火的数目%更新森林 新的森林=原来的森林-着火的数目+新种的数目senlin=2*(senlin==2)-((senlin==2)&(temp>0|rand(n,n)<pfire))+2*((senlin==0)&rand(n,n)<pplant);a=find(senlin==2);aa=length(a);b=find(senlin==1);bb=length(b);shu(i)=aa;fire(i)=50*bb;%乘上一个系数是因为火的数量比树木的数量小大多,这两幅图放在一起时看不出或的趋势,乘上30将火的数量扩大,%可以更明显地看出两者%定义火灾等级if bb>=0&&bb<=10str1="森林安全";elseif bb>10&&bb<=100str1="火灾发展";elseif bb>100str1="森林大火";end%定义火灾预警等级if aa>48000||bb>=10str2="火灾预警:红色预警";elseif aa<=48000&&aa>42000str2="火灾预警:黄色预警";elseif aa>35000&&aa<=42000str2="火灾预警:蓝色预警";elseif aa>=0&&aa<=35000str2="火灾预警:森林安全";endstr=[str1 ; str2];%10是为了在文本框中换行显示str1和str2%更新图像set(img,'cdata',cat(3,(senlin==1),(senlin==2),zeros(n,n)));drawnow;figure(2);delete(m);%删除之前的文本框plot(shu);hold onplot(fire);legend(['绿树的数量:' num2str(aa)],['火的数量'  num2str(bb)]);title(['时间T=',num2str(i),'天']);m=annotation('textbox',[0.15 0.8 0.1 0.1],'LineStyle','-','LineWidth',1,'string',str);hold offend

某时刻的结果

使用matlab实现随机森林仿真相关推荐

  1. matlab中随机森林实现,随机森林实现 MATLAB

    matlab 中随机森林工具箱的下载地址: http://code.google.com/p/randomforest-matlab/downloads/detail?name=Windows-Pre ...

  2. Matlab实现随机森林、神经网络、Lasso回归

    实现之前所说的上传Matlab实现随机森林.神经网络.Lasso回归的承诺. Lasso lasso具有降维的功能,但区别于PCA,lasso直接减少特征数,做的是特征选择,PCA是通过空间转换将特征 ...

  3. Matlab之随机森林TreeBagger

    MATLAB之随机森林TreeBagger TreeBagger 1 方法: 2 属性: TreeBagger TreeBagger用来创建一个袋装决策树的集合. 1 方法: append compa ...

  4. 把树分成森林 matlab,20170106RF_Matlab 随机森林指的是利用多棵树对样本进行训练并预测的一种分类器,包括两个方面:数据的随 269万源代码下载- www.pudn.com...

    文件名称: 20170106RF_Matlab下载  收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 441 KB 上传时间: 2017-01-06 下载次数: 0 ...

  5. 随机森林用matlab实现,matlab实现随机森林

    MATLAB中的分类器_金融/投资_经管营销_专业资料.MATLAB 中的分类器目前了解到的 MATLAB 中分类器有:K 近邻分类器,随机森林分类器,朴素贝叶斯,集成学习 方法,鉴别...... 机 ...

  6. 随机森林特征个数mtry matlab,基于随机森林的特征选择算法

    2.1 算法描述 本文提出了一种基于随机森林的Wrapper特征选择方法RFFS,利用随机森林算法的变量重要性度量对特征进行排序,然后采用序列后向搜索方法,每次从特征集合中去掉一个最不重要(重要性得分 ...

  7. Matlab TreeBagger随机森林分类实例

    例子 clc; clear all; close all;rng(6,'twister')% 载入数据,花的数据 load fisheriris% 随机划分训练数据和验证数据 index = logi ...

  8. 随机森林降维matlab代码,随机森林代码实现问题

    % mtry  = number of predictors sampled for spliting at each node. % votes (classification only) a ma ...

  9. 随机森林算法Matlab实现

    随机森林算法Matlab实现 瞎BB 代码 计算当前自身gini系数 求最优划分点及其gini系数 对data中按decision属性值从小到大排列 生成结点 生成随机采样样本数据 生成决策树 评价函 ...

最新文章

  1. puppet相关问题统计
  2. 用Leangoo看板工具策划一场活动,看板示例
  3. 实验5:配置通过静态工厂方法创建的bean、实例工厂方法创建的bean、(FactoryBean测试)★
  4. 软考准考证打印详细步骤(打印一张纸上)
  5. 高效能人士的七个习惯_《高效能人士的七个习惯》导图和读后感
  6. antd 嵌套子表格_大型前端项目架构优化探索之路腾讯文档表格
  7. py-faster-rcnn + ZF 实现自己的数据训练与检测(一)
  8. 不同类型的变量在内存中存储的详细情况
  9. JSP中直接在输入框中校验
  10. bba70_BBA的完整形式是什么?
  11. CentOS6.9快速安装配置svn
  12. Java笔记(二十一) 动态代理
  13. BDFZOI 迷宫问题
  14. 函数编程中的递归思想
  15. 软件工程期中作业-阅读和提问
  16. Mac修改hosts方法
  17. LG 的数学计划 ---- 第三步 欧几里得算法和扩展欧几里得
  18. JavaScript 修改地址栏指定参数
  19. 高考改革后计算机老师,高考改革“漏洞”多?2020新高考选科数据曝光!这是选科最佳组合...
  20. 娱乐之神兽羊驼(原创)

热门文章

  1. indy-sdk tutorials数字身份认证(二)
  2. c语言输入循环语句,C语言中输入输出和循环语句详解.ppt
  3. 2.Unity2D 横版 帧动画sprite animation+动画状态机animator+丝滑连击动作
  4. Android监听用户打开系统相机进行录像行为
  5. 如何成为一个顶流游戏up主?
  6. HP笔记本BIOS硬盘SATA模式修改详细教程!
  7. 【干货#001】小程序使用有赞ZanUI
  8. 五个安卓黑科技手机app,看看不如用用!心动不如行动哦
  9. seata:get table meta failed, please check whether the table `table_name` exists
  10. postgreSQL中的array_to_string函数和如何实现group_concat