1

我想评估通过 Landsat 图像的监督分类分类的土地覆盖类别的准确性。作为参考数据,我使用航空摄影。

我对分类的 Landsat 数据进行了采样,在同一验证点,我从航空摄影中确定了土地覆盖类别。即,我的每个验证点都有两个属性:一个来自Landsat(landsat),第二个来自航拍(reference)。

我想从一组验证点计算一个误差矩阵(列联表)和准确度评估(整体准确度,用户生产商的准确度)。

我找到了一个包greenbrownasbio来评估分类的准确性。然而,我对用户和生产者准确性的最终结果在两个包之间切换。

请问,哪个包正确计算了用户和生产者精度的值

可复制的例子

library(asbio)

# create dummy data
landsat <- c(1, 1, 1, 2, 2, 2, 3, 4, 5, 5, 5, 1, 1, 1, 2, 2, 2, 3, 4, 5, 5, 3, 3, 2, 2)
reference <- c(1, 2, 1, 2, 2, 2, 3, 4, 2, 2, 5, 1, 2, 2, 2, 1, 2, 3, 4, 5, 5, 3, 3, 2, 2)

# calculate Kappa statistics
asbio::Kappa(landsat,reference)  # Kappa(class1, reference)

# check out Kappa results
$ttl_agreement
[1] 76

$user_accuracy
1     2     3     4     5 
75.0  58.3 100.0 100.0 100.0 

$producer_accuracy
1     2     3     4     5 
50.0  87.5 100.0 100.0  60.0 

$khat
[1] 68.1

$table
       reference
class1  1 2 3 4 5
      1 3 3 0 0 0
      2 1 7 0 0 0
      3 0 0 4 0 0
      4 0 0 0 2 0
      5 0 2 0 0 3

# ----------------------------------------------------------------------   
# make the same calculation with the greenbrown package
# ----------------------------------------------------------------------

library(greenbrown)  
library(strucchange)
library(raster)
library(Kendall)
library(plyr)
library(bfast)
library(zoo)

# calculate the contingency table
tab <- table(landsat, reference)   data

# let's see the tab
tab

           reference
landsat   1 2 3 4 5
        1 3 3 0 0 0
        2 1 7 0 0 0
        3 0 0 4 0 0
        4 0 0 0 2 0
        5 0 2 0 0 3

# calculate the accuracy assessement
greenbrown::AccuracyAssessment(tab)

                    1        2   3   4   5 Sum UserAccuracy
1                 3  3.00000   0   0   0   6         50.0
2                 1  7.00000   0   0   0   8         87.5
3                 0  0.00000   4   0   0   4        100.0
4                 0  0.00000   0   2   0   2        100.0
5                 0  2.00000   0   0   3   5         60.0
Sum               4 12.00000   4   2   3  25           NA
ProducerAccuracy 75 58.33333 100 100 100  NA         76.0

用户和生产者的精度在两个包之间切换!请问,用户和生产者的准确度的计算和估计是正确的吗?

4

0 回答 0