学习笔记:PIE-Engine监督分类
官网的教程太简单,在这里补充一下。
一、核心内容说明
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监督分类相关推荐
- Express engine 学习笔记 - app.engine 的使用方法
看下面这段代码: server.engine('html',ngExpressEngine({bootstrap: AppServerModule,})); app.engine(ext, callb ...
- [pyecharts学习笔记]——Pie饼图
基本示例 from pyecharts import options as opts from pyecharts.charts import Pie from pyecharts.faker imp ...
- GEE (Google Earth Engine)最基础代码学习笔记三
GEE (Google Earth Engine)代码学习笔记三 本次学习核心为:将JavaScript objects and primitives放入Earth Engine 容器传到服务器,并处 ...
- 【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 构造函数 ...
- Flax Engine(动画系统)学习笔记(三)——骨骼
2021SC@SDUSC 骨骼(skeleton)由刚性的关节(joint)层阶结构构成.(技术上来说,关节就是动画师直接控制的刚性物体,而骨头只是关节之间的空位.但通常来说,游戏引擎并不关注骨头,只 ...
- GEE(Google Earth Engine) 最基础代码学习笔记二 —— JavaScript 语言
GEE(Google Earth Engine) 学习笔记二 Javascript 语言 1. 注释 print('Hello World!'); 如果要注释,则在代码前面加//,比如: // pri ...
- GEE(Google Earth Engine) 代码学习笔记一 快速入门
GEE 代码学习笔记一 (GEE 基于JavaScript语言和python语言,我记录的是JavaScript语言) 1.GEE 快速入门 quick start. 2.基本语句 - 简单输出 pr ...
- 【PIE-Engine Studio学习笔记05】图像分类——非监督分类
[PIE-Engine Studio学习笔记05]图像分类--非监督分类 一.图像分类含义 图像分类是将图像中每个像元根据其在不同波段的光谱亮度.空间结构特征或者其他信息,按照某种规则或算法划分为不同 ...
- mysql5.0镜像_Mysql5.0学习笔记(一)
Mysql5.0学习笔记(一) -基本sql语句与支持字符集 1.登录 mysql -h localhost -u root 2.创建用户firstdb(密码firstdb)和数据库,并赋予权限于fi ...
最新文章
- 在线学位课程_您在四年制计算机科学学位课程中学到的知识
- 用友华表cell的程序发布
- python定义一个类和子类_Python面向对象class类属性及子类用法分析
- 使用PHP创建一个REST API(译)
- 「Python」在虚拟环境中使用pip
- 无忧计算机c语言二级题库,干货for计算机等级考试题库:二级C语言试题
- Scala 函数传名调用(call-by-name)
- JavaScript面向对象——理解构造函数继承(类继承)
- 渐入“衰”境:警惕企业的六大老人病
- 英文字典。怎样设计数据结构
- 编码规范(代码优化)
- 怎么查EI论文的检索号
- ApacheCN 翻译活动进度公告 2019.5.3
- ATP 系列无线测温集中采集触摸屏
- java判断南北纬度的分界线_中国地理之南北分界线,一看就知道自己是南方人还是北方人...
- FPGA Implementation of BPSK Modulator and Demodulator
- Java之HashMap系列--HashMap扩容的原理
- 百度云加速zblog和WordPress规则自定义
- springmvc页面跳转错误404/找不到页面/拒绝访问
- 【投资者日记(戴斌撰写)】【2017年9月13日(周三)】
热门文章
- 我涉及的数据可视化的实现技术和工具
- nb移动udp_【一点资讯】华为L3 | 集采补考真题及答案 www.yidianzixun.com
- SQL 各种锁等待类型 wait type--sys.dm_os_wait_stats 表
- 2012意大利之行3:罗马的路和车
- PID和TID之间的区别
- android视频添加字幕,视频加字幕手机app
- 欧姆龙e5dc温控器_E5□C(E5AC/E5EC/E5CC/E5DC)温控器如何进行AT自整定?
- html广告横幅图片,制作漂亮网页横幅广告图片的PS教程
- 如何在微信内置浏览器中开启开发者模式(f12)
- linux系统切换输入法,linux系统切换输入法