精华内容
下载资源
问答
  • 南方紫色土区不同森林恢复类型对土壤质量影响,程金花,张友焱,为了探讨不同森林恢复类型对土壤质量影响,对南方紫色土区4种主要森林恢复类型及对照地土壤物理和化学特性进行了比较研究。结�
  • 本文对华北地区主要针叶林下的森林腐殖质类型进行了研究。研究结果表明,在本地区海拔2400米以下针叶林内,森林土壤地表腐殖质层中,不存在H层。森林腐殖质类型均属细腐腐殖质类型。根据F层厚度和性状,可将针叶林下...
  • 本文对华北地区主要阔叶林下的森林腐殖质类型进行了研究。研究结果表明,在本地区阔叶林下,森林土壤地表腐殖质层中,不存在H层。森林腐殖质类型均属细腐腐殖质类型。根据F层厚度和性状,可将阔叶林下细腐腐殖质...
  • 本文对太岳山林区内不同海拔高度的森林土壤类型进行了调查研究.选择了5个典型剖面;详细观察了各剖面形态;对其物理化学性质作了全面分析;并对肥力状况作了初步探讨.结果确定了,该林区山地垂直带上4个主要土壤类型...
  • 森林类型分类对森林生态系统管理起重要作用,高光谱影像由于波段多,传统方法...实验结果表明:层数为3,每层节点数为256网络结构对森林类型识别效果最好,总体精度达85.8%,系数为0.785,好于支持向量机分类结果.
  • 您可以使用本数据集从严格制图变量(与遥感数据相反)中预测森林覆盖类型(主要树种)。给定30 x 30米单元实际森林覆盖类型是根据美国森林服务(USFS)区域2资源信息系统数据确定。然后,从美国地质调查局...
  • 论述了贡嘎山东坡森林土壤形成条件及森林土壤基本属性,并着重阐述了山原型红壤和山地灰化土发生学基本特征,且森林土壤垂直分布规律明显,垂直带谱结构完整.
  • Random Forests预测森林植被类型

    千次阅读 2017-10-07 15:39:57
    在Colorado北部,有一片森林森林里中有多种类型的植被,有人已经将其大概总结出来了7种: 1 - Spruce/Fir 2 - Lodgepole Pine 3 - Ponderosa Pine 4 - Cottonwood/Willow 5 - Aspen 6 - Douglas-fir 7 - ...


    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%

    展开全文
  • 使用随机森林和过采样菊花异常花瓣类型分类
  • 【目的】研究广州市不同城市森林类型的林下植物丰富度和多样性,为广州市城市森林人工林近自然经营以及生物多样性保护提供科学依据.【方法】2012年9―10月对广州市不同森林类型的城市森林林分结构进行样地调查,...
  • 采用层次分析法和耦合理论分析森林景观类型间耦合程度,以西洞庭湖区为例,计算不同景观类型不同龄组耦合度,结果表明:景观类型之间相似程度越大,耦合度越小,从龄组来看,幼龄林耦合度最小,中龄林耦合度最大,...
  • 2)不同森林类型之间截雪量大小与降雪强度有关,且在同一种森林类型的不同降雪强度中,其截留率差异也不同。3)云冷杉红松林内积雪厚度最小,3月中旬达最大值32cm,较次生白桦林和落叶松人工林内积雪厚度减少了...
  • 对长白山林区4种不同森林类型土壤肥力进行了研究.结果表明:①连栽落叶松林地有2 5cm厚枯枝落叶层,且有15cm厚部分完全分解,A层有机质和多酚氧化酶含量最高,B层各项肥力指标均较低;②云冷杉林枯枝落叶层...
  • 机器学习森林分类原始数据,分为训练数据和测试数据两部分
  • 利用网袋法对九寨沟主要森林类型的凋落物分解作用进行了研究。结果显示,九寨沟各林型凋落物分解率k以白桦林最高,达0.7864,巴山冷杉林最低,为0.2705。九寨沟6个主要类型群落中,除巴山冷杉林年分解率为23....
  • 经营条件下的森林发育是自然演替和人为干扰共同作用渐变过程,不同森林发育演替阶段具有不同林分特征,对森林经营具有导向作用,好经营处理能够加快森林生长发展进程;反之,则效果甚微或使森林发展发生倒退,...
  • MachineLearningResearch_on_RandomForestMissingDataImputationMethod 不同类型缺失数据随机森林归因研究。
  • 为了更好地了解热带生态系统森林的生物功能,影响森林分布及其发展的因素很重要。 刚果共和国的重要森林面积为2350万公顷,分为三个大的地块,从北部到南部都有不同的森林单元。 本研究建议强调刚果的一些热带森林的...
  • 中亚热带几种森林类型土壤碳密度和碳贮量研究,李强,马明东,该文研究了地处中亚热带都江堰灵岩山几种森林类型土壤有机碳(SOC)密度、碳贮量及相关规律。结果表明:4种森林类型及不同土层
  • 在布拉柴维尔“科学城”的森林中进行了土壤类型和植物多样性研究。 该研究旨在评估土壤覆盖对分类单元分布影响。 该研究覆盖了18个样地,每个样地625平方米,分布在不同土壤剖面中。 植物种类清单涉及dbh≥10 ...
  • 为提高大区域TM影像对针阔混交林识别精度,充分考虑遥感影像像元值随机性和空间性,以盘古林场有林地TM遥感影像为例,结合地统计学知识,利用变异函数计算图像纹理信息,分析了影像纹理信息提取重要因子,确定...
  • Spark 数据挖掘—利用决策树预测森林覆盖类型 1 前言 预测问题记住一点:最垃圾预测就是使用平均值,如果你预测连比直接给出平均值效果都要差,那就省省吧!统计学诞生一个多世纪之后,随着现在机器学习和数据...

    Spark 数据挖掘—利用决策树预测森林覆盖类型

    1 前言

    预测问题记住一点:最垃圾的预测就是使用平均值,如果你的预测连比直接给出平均值效果都要差,那就省省吧!
    统计学诞生一个多世纪之后,随着现在机器学习和数据科学的产生,我们依旧使用回归的思想来进行预测,尽管回归 就是用平均值向后不断回滚来预测。回归的技术和分类的技术紧密相关。通常情况下,当目标变量是连续数值时指的是回归,例如预测 身高和体重。当预测的目标变量是名义或者说是类别变量时,指的就是分类,例如预测邮件是否是垃圾邮件。
    无论是分类还是回归,都需要给定已知信息去预测未知信息,所以它们都需要从输入输出来学习。它们需要包括问题和答案。这类算法因此也称为监督学习的方法。
    回归和分类是使用年代最近研究的最充分的预测分析技术。很多算法开源包都包含通用的这些方法。比如:支持向量机,逻辑回归,朴素贝叶斯,神经网络和深度学习。
    本文的重点是讨论:决策树和它的扩展随机森林。决策树是通用而且灵活的分类回归算法。

    2 一些基本概念

    注意:特别小心分类变量(尤其是那些用数字表示的分类变量,不要随便放到算法中去训练)和数值变量
    注意:不是所有的算法都能处理分类变量,或者都能处理回归分类问题,但是放心决策树都可以

    3 算法简介

    决策树

    image
    image

    4 数据集

    本文将使用著名的 Covtype 数据集合,可以在 http://bit.ly/1KiJRfg 这里下载。下载之后是一个压缩的 csv 文件, linux 用户可以用命令:tar -xzvf 解压缩,windows用户可以使用 .7-zip 解压缩,同时下载数据集的描述文件 covtype.info 数据集记录的是美国 Colorado 植被覆盖类型数据,也是唯一一个关心真实森林的数据。每条记录都包含很多指标描述每一块土地。 例如:高度、坡度、到水的距离、树荫下的面积、土壤的类型等等。森林的覆盖类型是需要根据其他54个特征进行预测的特征。 这是一个有趣的数据集,它包含分类和数值特征。总共有581012条记录。每条记录有55列,其中一列是土壤的类型,其他54列是输入特征。 虽然这个数据集还不能算得上真正的大数据,但是也能说明很多问题。很幸运,这个数据集已经是csv文件,所以不需要太多的数据清洗或者其他的准备就可以给 Spark Mllib 使用。 数据集可上传到 HDFS,当然也可以先放到本地进行这个有趣的测试。不管哪种方式,Spark 都只需要改变一两个参数。 这里不得不再次提醒一个问题,分类变量如何编码,下面是编码的方式:

    一个合适的编码方式是:one-hot 或者 1 of n 编码 一个分类变量:编码为 n(分类特征个数)个变量
    另一种编码方式:就是给每个值一个固定的数字,例如: 1, 2, 3, ..., n
    

    当算法中把编码当作数字的时候只能使用第一种编码,第二种编码会得出滑稽的结果。具体原因是没有大小的东西被强制成有大小之分。
    Covtype 数据集中有很多类型的特征,不过很幸运,它已经帮我们转换成 one-hot 形势,具体来说:

    11到14列,其实表示的是 Wilderness_Area,Wilderness_Area 本身有 4 个类别
    15到54列,其实表示的是 Soil_Type,Soil_Type 本身有 40个属性值
    55列是表示目标值,当然它不需要表示成为 one-hot形式。
    

    这个数据集每一列的变量单位都不一定相同,有的表示距离,有的表示度数等等

    5 Spark 决策树模型

    下面给出一个初步的利用Spark MLlib 实验的决策树模型,具体的意图,代码都有详细的注释:

      //本地测试
      val rootDir = "your sample data directory"
      def main(args: Array[String]) {
        val conf = new SparkConf().setAppName("SparkInAction").setMaster("local[4]")
        val sc = new SparkContext(conf)
        val covTypeData = sc.textFile(rootDir + "/covtype.data")
        val data = dataPrepare(covTypeData)
        //选择测试集合和训练集合
        val Array(train, cvData, test) =
          data.randomSplit(Array(0.8, 0.1, 0.1))
        train.cache()
        cvData.cache()
        test.cache()
    
        val model = buildDecisionTree(train, cvData)
      }
    
    
      /**
       * Spark MLlib 表示特征向量的对象是 LabeledPoint
       * 这个对象由表示特征的向量和目标变量组成
       */
      def dataPrepare(data: RDD[String]) = {
        val sample = data.map{
          line =>
            //全部数据转化为 double
            val array = line.split(",").map(_.toDouble)
            //前面54列是特征向量,后面一列是目标变量 label
            val featureVector = Vectors.dense(array.init)
            //决策树目标变量必须从0开始,按照1递增
            LabeledPoint(array.last - 1, featureVector)
        }
        sample
      }
    
      /**
       * 决策树模型建立,这里很容易改进为十择交叉验证。
       * 对每一份数据建立模型时,都需要随机选出部分数据来调整模型参数到最优。
       * 通过交叉验证的方式调整参数。
       * @param train
       * @param cvData
       */
      def buildDecisionTree(train: RDD[LabeledPoint], cvData: RDD[LabeledPoint]) = {
        def getMetrics(model: DecisionTreeModel, data: RDD[LabeledPoint]) = {
          val predictionsAndLabels = data.map {
            example =>
              (model.predict(example.features), example.label)
          }
          new MulticlassMetrics(predictionsAndLabels)
        }
        val model = DecisionTree.trainClassifier(
          train, 7, Map[Int, Int](), "gini", 4, 100
        )
        val matrics = getMetrics(model, cvData)
        println(matrics.confusionMatrix)
        (0 until 7).map(
          cat => (matrics.precision(cat), matrics.recall(cat))
        ).foreach(println)
      }

    这个是初步的运行结果:

    #整体的准确率和召回率
    (0.7012384971978136,0.7012384971978136)
    #每一个类别的准确率和召回率
    (0.685108051158916,0.6668097486526446)
    (0.7255299659774928,0.7930627570177007)
    (0.6194455768446799,0.8685338668190912)
    (0.3771043771043771,0.39436619718309857)
    (0.55,0.011727078891257996)
    (0.0,0.0)
    (0.7174657534246576,0.4134188455846078)

    70%的准确率和召回率似乎效果还不错,但是我们现在不能盲目的认为我们的效果就真的不错了,有时候瞎猜效果也会不错。 例如:70%的数据属于类别1,每次都猜测类别是1,那么效果也能达到70%的准确率,下面我们确定一下瞎猜的准确率: 回答瞎猜猜对的概率,这个问题也不是简单的,回到概率论课堂上,在训练样本每类概率已知的情况下,测试样本瞎猜对的概率有多大呢? 随机给出一个样本:猜测类A的概率是由训练样本决定的,同时猜对的概率是由测试样本决定的,所以瞎猜猜对的概率是训练样本每类的概率分别 乘以测试样本对应类的概率之和

     /**
       * 获取模型瞎猜的概率
       * @param train 测试数据集
       * @param cvData 验证数据集
       */
      def guessProb(train: RDD[LabeledPoint], cvData: RDD[LabeledPoint]) {
        /**
         * 返回数据集合中,每一个类别的概率
         * @param data 训练数据集
         */
        def labelProb(data: RDD[LabeledPoint]): Array[Double] = {
          val labelCnt = data.map(_.label).countByValue()
          val labelProb = labelCnt.toArray.sortBy(_._1).map(_._2)
          labelProb.map(_.toDouble/labelProb.sum)
        }
    
        val trainProb = labelProb(train)
        val cvProb = labelProb(cvData)
        val prob = trainProb.zip(cvProb).map {
          case (a, b) => a * b
        }.sum
        println(prob)
      }

    可以看到瞎猜的结果只有:0.3771281350885772 的准确率。说明70%的准确率效果确实不错,但是请注意,我们还没有优化参数, 说明我们的模型还有优化的空间。

    6 决策树参数选择

    主要的参数有下面几个:

    • Maximum Depth: 决策树树的最大深度,控制深度防止过拟合
    • 决策树训练算法迭代最大次数
    • 纯度测量算法 Gini Entropy (Gini纯度和熵) 通过反复查看不同参数模型评估效果,下面给出测试代码:
     /**
      * 模型评估
      * @param trainData 训练数据
      * @param cvData 交叉验证数据
      */
     def evaluate(trainData: RDD[LabeledPoint], cvData: RDD[LabeledPoint]): Unit = {
       val evaluations =
         for (impurity <- Array("gini", "entropy");
              depth <- Array(1, 20);
              bins <- Array(10, 300))
           yield {
             val model = DecisionTree.trainClassifier(
               trainData, 7, Map[Int,Int](), impurity, depth, bins)
             val predictionsAndLabels = cvData.map(example =>
               (model.predict(example.features), example.label)
             )
             val accuracy =
               new MulticlassMetrics(predictionsAndLabels).precision
             ((impurity, depth, bins), accuracy)
           }
       evaluations.sortBy(_._2).reverse.foreach(println)
     }

    文章转载自 开源中国社区[https://www.oschina.net]

    展开全文
  • 通过主成分分析找出了10个环境指标是构成森林土壤肥力主要因子;系统聚类分析划分出来4个肥力类型所表明土壤肥力差异,对合理利用、恢复土壤资源及营林有实际生产意义;并经Fisher判别方法检验了聚类分析分类...
  • This dataset contains tree observations from four areas of the Roosevelt National Forest in Colorado. 该数据集包含科罗拉多州罗斯福国家森林四个地区树木观测结果。 covtype.csv
  • 油松林系陕北黄土高原森林地带气候顶极群落,共含11个类型,其中分布普遍是:油松――多花胡枝子――大披针苔林;油松――柔毛绣线菊――大披针苔林;油松――虎椿子――大披针苔林;油松――胡枝子――大披针苔林;...
  • 结果表明:大气降水和蒸散量是引起土壤含水量变化主要因素,土壤含水量季节性变化趋势十分明显:坡位对林区不同森林类型土壤含水量无显著影响;不同层次土壤含水量差异显著,土层深(H)0≤H〈20cm土壤含水量...
  • 结果表明:4个不同海拔森林类型土壤理化性质和酶活性存在明显差异,5种土壤酶活性在不同海拔森林类型土壤剖面中均呈现自上而下递减规律,磷酸单酯酶活性在4个不同森林类型间均呈显著差异;蔗糖酶、脲酶、过氧化酶...
  • 对重庆市缙云山自然保护区9次火警调查分析结果发现,着火地点与植物类型有密切关系.纯针叶林及竹林容易引起山火.从生物防火角度出发,通过多种措施,调整现实林分结构,改变植被类型,能有效地预防森林火灾发生.
  • 选择6年生甜樱桃Cerasus avium品种红灯Cerasus avium‘Hongdeng’试验基地开展覆草试验。覆草栽培与裸土对照交互排列,小区面积333。5rn2,重复3次,翌年开始生长调查。结果表明:覆草栽培可以使樱桃新梢旺长期...
  • 森林的用途愈来愈向综合多效益发展,作为森林公园,更注意到它的生态环境效益.森林的理水效益是指森林涵养水源、保持水土的作用,即森林减少地表径流,增加地下径流,从而调节水分大循环的进程,稳定河流、保持水土的作用....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 951
精华内容 380
关键字:

森林的类型