No.17 Kappa系数精度评价1.0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# library
library(openxlsx)
 
# 读取 Excel 的第一个 sheet, )
AccData <- read.xlsx("D:/R_proj/a绘图demo/bKappa/五指山生态系统分类精度评价一二级类.xlsx",
sheet = 1, colNames = T)
AccData
#EXCEL中存在空值,需要补零
AccData[is.na(AccData)] <- 0
AccMatrix <- data.matrix(AccData[1:nrow(AccData),2:ncol(AccData)])
 
#提取矩阵主对角线
MatDiag <- diag(AccMatrix)
 
#提取总数
TotalNum <- sum(AccMatrix)
 
#总体分类精度
OA <- sum(MatDiag)/TotalNum
 
#Kappa系数
#函数包求Kappa
library(vcd)
K <- Kappa(AccMatrix)
#手动计算Kappa
colFreqs <- colSums(AccMatrix)/TotalNum
rowFreqs <- rowSums(AccMatrix)/TotalNum
p0 <- sum(MatDiag)/TotalNum
pe <- crossprod(colFreqs, rowFreqs)[1]
k2 <- (p0-pe)/(1-pe)
#制图精度
for (i in 1:nrow(AccMatrix)) {
PA <- AccMatrix[i,i]/sum(AccMatrix[,i])
print(paste(AccData[i,1], "制图精度为", PA*100, "%"))
}
#用户精度
for (i in 1:nrow(AccMatrix)) {
UA <- AccMatrix[i,i]/sum(AccMatrix[i,])
print(paste(AccData[i,1], "用户精度为", UA*100, "%"))
}
#计算结果输出
print(paste("总体分类精度为", OA*100, "%"))
print(paste("Kappa系数为", K[["Unweighted"]][["value"]]*100, "%"))

  

posted @   百里屠苏top  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示