官网的教程太简单,在这里补充一下。

一、核心内容说明

1、绘制训练区

说明:这里直接利用PEE自带的绘点工具即可,无需其他代码

(1)绘制样本点

绘制样本点的规则和ENVI一样,但在这里要注意一个图层只能绘制一种类型的样本(比如都是水体)

(2)样本点转要素集

别忘了点保存 

这里要说明一下,属性名称指的是这个地物的面积,种类,高度等(在本次说明中指得是roi样本点的种类),属性值指的是100㎡,第一种,10m等(在本次说明中指得是roi样本点的种类:水体)。属性值只能以数字形式表示,不然计算系统无法识别。

这里是绘制结果

(3)导入图层与合并集合

说明:合并集合的原因是sampleRegions无法识别多个要素集(只取第一个)

导入图层

 代码最好放在最上面!!!

 合并集合

首先定义一个新的要素集

var fea = pie.FeatureCollection([]);

然后将其他要素集中的要素都复制到这里面来:

(我们要的是这一段)

pie.Feature(pie.Geometry.Point([116.64928886781411,36.45477006358118], null),{"type": "1"}),pie

成果

2、样本点采样

代码

var training = img.sampleRegions(fea,["type"],10);

代码说明

img是用于分类的影像图,fea是样本点,type是采样结果保留的属性值(作为分类的依据),10是影象分辨率。

sampleRegions功能:在当前影像中采集距样本点最近的像素块的DN值(如果给定参数大于实际影像分辨率则取多个像素块DN值的平均值)

采样结果

3、监督分类

代码:

var classifier = pie.Classifier.rTrees().train(training,"type",["B1","B2","B3"]);

var resultImage = img.classify(classifier,"classifyA");

var visParam = {

opacity:1,

uniqueValue:'1,2,3',

palette: '#87CEFA,#BDB76B,#CD0000'

};

Map.addLayer(resultImage,visParam);

Map.setCenter(0,0,0);

代码说明:

classifier是分类器.rTrees代表分类方式(决策树),resultImage是分类结果,visParam是分类结果的风格设置(数量必须与样本点的种类一致),Map.addLayer是加载分类结果

结果

4、精度评价

解释一下官网里的代码

// 获得样本点,并且按照7:3分成训练样本点和验证样本点,地图加载显示

var featureCollection = pie.FeatureCollection('user/17090142114/PGDB001/WorldROI');

featureCollection = featureCollection.randomColumn('random');

//令要素集产生一组随机数,数组名为random(和type一样,不过属性值是0~x随机数)

var trainingFeatures = featureCollection.filter(pie.Filter.lte("random", 0.7));

//对featurecollection进行筛选,删选出random属性值前百分之七十,筛选结果为trainingFeatures

var testingFeatures = featureCollection.filter(pie.Filter.gt("random", 0.7));

//同上,筛选条件变为后百分之七十

Map.addLayer(trainingFeatures,{color:'FF0000FF'},"TrainLayer");

Map.addLayer(testingFeatures,{color:'0000FFFF'},"TestLayer");

Map.centerObject(featureCollection,0);

//加载出来看一下训练样本和验证样本

// 构建查询数据

var image = pie.Image('user/17090142114/PGDB001/World84').select(["B1","B2","B3"]);

// 获得训练样本,并且按照7:3分成训练样本和验证样本

var sampleFeatureCollection = image.sampleRegions(featureCollection, ["type","random"], 50000);

//对样本点进行采样,保留的字段为type、random,采样结果为sampleFeatureCollection

var sampleTrainingFeatures = sampleFeatureCollection.filter(pie.Filter.lte("random", 0.7));

//同6行

var sampleTestingFeatures = sampleFeatureCollection.filter(pie.Filter.gt("random", 0.7));

// 构建正态贝叶斯分类器,并训练数据

var classifer = pie.Classifier.normalBayes().train(sampleTrainingFeatures, "type", ["B1", "B2", "B3"]);

// 影像分类,并加载显示

var resultImage = image.classify(classifer, "classifyA");

var visParam = {

opacity:1,

uniqueValue:'1,2,3,4',

palette: '008000,0000ff,ffa500,c0c0c0'

};

Map.addLayer(resultImage,visParam, "ClassifyImage");

Map.addLayer(image,{},"SrcImage",false);

// 添加图例

var data = {title: "利用分类",

colors: ['#ffa500','#008000','#0000ff','#c0c0c0'],

labels: ["沙漠","绿地", "海洋","冰川"],

step: 1};

var style = {

bottom: "10px",

right: "450px",

width: "400px",

height: "70px"

};

var legend = ui.Legend(data, style);

Map.addUI(legend);

// 评估训练样本的精度

var checkM = classifer.confusionMatrix();

print("训练矩阵:",checkM);

print("训练矩阵-ACC系数:",checkM.acc(),"训练矩阵-Kappa系数:",checkM.kappa());

// 评估验证样本的精度

var predictResult = sampleTestingFeatures.classify(classifer,"classification");

var errorM=predictResult.errorMatrix("type","classification");

print("验证矩阵:",errorM);

print("验证矩阵-ACC系数:",errorM.acc(),"验证矩阵-Kappa系数:",errorM.kappa());

学习笔记:PIE-Engine监督分类相关推荐

  1. Express engine 学习笔记 - app.engine 的使用方法

    看下面这段代码: server.engine('html',ngExpressEngine({bootstrap: AppServerModule,})); app.engine(ext, callb ...

  2. [pyecharts学习笔记]——Pie饼图

    基本示例 from pyecharts import options as opts from pyecharts.charts import Pie from pyecharts.faker imp ...

  3. GEE (Google Earth Engine)最基础代码学习笔记三

    GEE (Google Earth Engine)代码学习笔记三 本次学习核心为:将JavaScript objects and primitives放入Earth Engine 容器传到服务器,并处 ...

  4. 【vn.py学习笔记(五)】vn.py Base、Log、Oms、Email Engine源码阅读

    [vn.py学习笔记(五)]vn.py Base.Log.Oms.Email Engine源码阅读 写在前面 1 BaseEngine 2 LogEngine 3 OmsEngine 3.1 构造函数 ...

  5. Flax Engine(动画系统)学习笔记(三)——骨骼

    2021SC@SDUSC 骨骼(skeleton)由刚性的关节(joint)层阶结构构成.(技术上来说,关节就是动画师直接控制的刚性物体,而骨头只是关节之间的空位.但通常来说,游戏引擎并不关注骨头,只 ...

  6. GEE(Google Earth Engine) 最基础代码学习笔记二 —— JavaScript 语言

    GEE(Google Earth Engine) 学习笔记二 Javascript 语言 1. 注释 print('Hello World!'); 如果要注释,则在代码前面加//,比如: // pri ...

  7. GEE(Google Earth Engine) 代码学习笔记一 快速入门

    GEE 代码学习笔记一 (GEE 基于JavaScript语言和python语言,我记录的是JavaScript语言) 1.GEE 快速入门 quick start. 2.基本语句 - 简单输出 pr ...

  8. 【PIE-Engine Studio学习笔记05】图像分类——非监督分类

    [PIE-Engine Studio学习笔记05]图像分类--非监督分类 一.图像分类含义 图像分类是将图像中每个像元根据其在不同波段的光谱亮度.空间结构特征或者其他信息,按照某种规则或算法划分为不同 ...

  9. mysql5.0镜像_Mysql5.0学习笔记(一)

    Mysql5.0学习笔记(一) -基本sql语句与支持字符集 1.登录 mysql -h localhost -u root 2.创建用户firstdb(密码firstdb)和数据库,并赋予权限于fi ...

最新文章

  1. 在线学位课程_您在四年制计算机科学学位课程中学到的知识
  2. 用友华表cell的程序发布
  3. python定义一个类和子类_Python面向对象class类属性及子类用法分析
  4. 使用PHP创建一个REST API(译)
  5. 「Python」在虚拟环境中使用pip
  6. 无忧计算机c语言二级题库,干货for计算机等级考试题库:二级C语言试题
  7. Scala 函数传名调用(call-by-name)
  8. JavaScript面向对象——理解构造函数继承(类继承)
  9. 渐入“衰”境:警惕企业的六大老人病
  10. 英文字典。怎样设计数据结构
  11. 编码规范(代码优化)
  12. 怎么查EI论文的检索号
  13. ApacheCN 翻译活动进度公告 2019.5.3
  14. ATP 系列无线测温集中采集触摸屏
  15. java判断南北纬度的分界线_中国地理之南北分界线,一看就知道自己是南方人还是北方人...
  16. FPGA Implementation of BPSK Modulator and Demodulator
  17. Java之HashMap系列--HashMap扩容的原理
  18. 百度云加速zblog和WordPress规则自定义
  19. springmvc页面跳转错误404/找不到页面/拒绝访问
  20. 【投资者日记(戴斌撰写)】【2017年9月13日(周三)】

热门文章

  1. 我涉及的数据可视化的实现技术和工具
  2. nb移动udp_【一点资讯】华为L3 | 集采补考真题及答案 www.yidianzixun.com
  3. SQL 各种锁等待类型 wait type--sys.dm_os_wait_stats 表
  4. 2012意大利之行3:罗马的路和车
  5. PID和TID之间的区别
  6. android视频添加字幕,视频加字幕手机app
  7. 欧姆龙e5dc温控器_E5□C(E5AC/E5EC/E5CC/E5DC)温控器如何进行AT自整定?
  8. html广告横幅图片,制作漂亮网页横幅广告图片的PS教程
  9. 如何在微信内置浏览器中开启开发者模式(f12)
  10. linux系统切换输入法,linux系统切换输入法