专栏名称: 锐多宝
遥感技术教程、资讯与前沿论文
目录
相关文章推荐
财宝宝  ·  这还要你教?滚!-20250208223758 ·  13 小时前  
财宝宝  ·  转发微博-20250208120606 ·  昨天  
财宝宝  ·  deepseek完全无法使用。 ... ·  昨天  
重庆日报  ·  重庆楼市迎来“开门红”! ·  2 天前  
重庆日报  ·  重庆楼市迎来“开门红”! ·  2 天前  
51好读  ›  专栏  ›  锐多宝

Google Earth Engine精度评价方法

锐多宝  · 公众号  ·  · 2024-03-22 23:33

正文

今天讲讲如何在GEE中做最后的精度评价。主要是因为在和许多读者或通过交流群,或通过私聊沟通过程中,发现很多人还不是很理解在GEE中分类后精度评价的问题。
在进行评价之前,需要明晰在GEE中精度评价分为哪几种情况。我们这里说的是两种情况。 第一种,构建好了分类模型后,将分类模型应用于验证样本集,然后计算混淆矩阵;第二种,没有分类模型,只有分类结果图,那么应该是将分类结果图应用于样本集,最后计算混淆矩阵。

对于第一种情况,由于官方给出了有关代码,所以大家都比较好理解,也正是这么做的,具体参见下图。(参见代码:https://code.earthengine.google.com/e145a3f0e88cc272c6541f4514bb3093)

对于第二种情况,则有很多人不理解,或者还没有完全掌握。举个例子,下面有一张水体分类图和验证样本,需要计算水体精度,该如何做呢? 其实也是可以做的,最后的结果见下图:

那么两种方法的区别或者一致性是什么呢?这地方有个概念需要理解清楚,即精度评价针对的是测试样本本身,而不是模型。也就是说,对于测试样本集,我们已经构建好了标签信息,那么接下来要做的只是找到每个样本对应的分类标记就行。而分类标签的获取,可以是来源于模型,而更多的应该是直接来源于分类图结果。
那么, 对应到GEE中,测试样本集最后会是一个FeatureCollection类,在FeatureCollection类中可以计算混淆矩阵等指标,其输入只需要两个不同的字段(比如样本的属性字段“class”和分类结果图字段“classification”)。 那么,如何获取这两个字段,以及成功获取这两个字段,就可以计算精度。
对应于第一种情况,因为模型已经构建好了,当然可以用于分类每个样本的分类属性,所以可以构建这两个字段以及计算混淆矩阵的,也就是直接使用:

对应于第二种情况, 由于没有模型而只有分类结果图,所以需要做的就是获取测试样本集对应位置的分类结果,那么在GEE中自然想到sampleRegions函数,或者类似于能够替换sampleRegions的函数 ,效果如下图:
那么,第二种方式较第一种方式有什么好处呢?

1) 第二种方式使用范围更广泛,本质上更好,因为不再设计推理的过程

2) 第二种方案非常适合在分块情况下的精度评价 。我们知道分块后,每一块的测试样本集都是不同的,但是又需要给出一个总的整体的精度评价,那么此时需要将每一块内的测试样本集整合起来,最后利用全局分类图进行评价,那么此时就需要使用我们今天介绍的方法了。

今天的水体精度评价代码如下,大家有需要的自取:
https://code.earthengine.google.com/6d2ed19fb3917832c8883ad8ab0d77e6
var imgData = waterImg.rename('waterImg');Map.addLayer(imgData,{'min':0,'max':1,'palette':["f1f1f1","2010ff"]},"2018-01水體分佈圖")
var sampleSet = ee.FeatureCollection([waterPoint,nonWaterPoint]).flatten();
var imageSamp = imgData.sampleRegions({ "collection": sampleSet, "scale": 10, 'properties':['class'] // geometries: true});print






请到「今天看啥」查看全文