这几天在网上看到一篇关于随机森林的文章,感觉挺有趣的,就在这简单地总结了一下随机森林,并使用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. 人生影响最大的三位老师
  2. CodeForces - 1368F Lamps on a Circle(交互+贪心)
  3. 如何通过js处理相同时间的信息整合到一起的问题
  4. f-measure[转]
  5. 大众eagit_试驾大众全新高尔夫GTI
  6. 第八届蓝桥杯第十题 k倍区间
  7. Mac 显示和隐藏文件
  8. 网页资源下载 -- 水浒传全集
  9. delphi pi怎么得到?
  10. ubuntu16.04 联想拯救者y7000笔记本电脑安装1060显卡驱动,及ubuntu16.04更新内核
  11. 酞菁-氧化石墨烯(NiPc- NHCO-EGO)|齐岳生物提供酞菁定制材料
  12. 通过v$bgprocess查看后台进程
  13. 时间校准(全网最全最准确方案)完美无解
  14. js删除数组,checkedBox选中状态,javascript数组删除重复项
  15. 如何用计算机表达无理数,科学网—刘瑞祥:计算机表示无理数的一些设想 - 孙冰的博文...
  16. Idea中的数据库管理工具
  17. nohup ——Linux后台运行命令
  18. THUWC2017 酱油记
  19. 【Python 实战基础】如何实现一个英汉翻译小字典
  20. 基于STM32F429的RGB屏使用

热门文章

  1. 吴恩达——成本函数公式
  2. 逼死男生的女大18变
  3. 我有必要给英语学习做个笔记了
  4. 进阶篇:软件测试工程师的岗位职责
  5. Openstack中OVS SRIOV混杂模式的支持
  6. Android在线热修复基本流程
  7. Python实现 通过RS232 SCPI 命令控制Tektronix DMM4050
  8. 独立站盈利只靠引流?5个妙招助你提升客单价!
  9. seata 分布式解决方案:
  10. 经典公式推敲(爆笑)