No.18 Kappa系数精度评价2.0

news/2025/2/11 15:24:06/文章来源:https://www.cnblogs.com/bltstop/p/18709816
# Loading necessary libraries
library(openxlsx)
library(vcd)# Reading the Excel data
AccData <- read.xlsx("D:/R_proj/a绘图demo/bKappa/五指山生态系统分类精度评价一二级类.xlsx",sheet = 1, colNames = T)# Handle missing values (replace NA with 0)
AccData[is.na(AccData)] <- 0
AccMatrix <- data.matrix(AccData[1:nrow(AccData), 2:ncol(AccData)])# Extract diagonal and total sum,提取对角线和总和
MatDiag <- diag(AccMatrix)
TotalNum <- sum(AccMatrix)# Overall accuracy,总体精度 (OA)
OA <- sum(MatDiag) / TotalNum# Kappa coefficient,计算Kappa系数,用vcd包中的函数
K <- Kappa(AccMatrix)# Calculate Kappa manually,手动计算Kappa系数
colFreqs <- colSums(AccMatrix) / TotalNum
colFreqs
rowFreqs <- rowSums(AccMatrix) / TotalNum
rowFreqs
p0 <- sum(MatDiag) / TotalNum
pe <- crossprod(colFreqs, rowFreqs)[1]
k2 <- (p0 - pe) / (1 - pe)# Calculate mapping accuracy and user accuracy
mapping_accuracy <- data.frame(Class = character(), MappingAccuracy = numeric())
user_accuracy <- data.frame(Class = character(), UserAccuracy = numeric())for (i in 1:nrow(AccMatrix)) {PA <- AccMatrix[i, i] / sum(AccMatrix[, i])UA <- AccMatrix[i, i] / sum(AccMatrix[i, ])# Append results to data framesmapping_accuracy <- rbind(mapping_accuracy, data.frame(Class = AccData[i, 1], MappingAccuracy = PA))user_accuracy <- rbind(user_accuracy, data.frame(Class = AccData[i, 1], UserAccuracy = UA))print(paste(AccData[i, 1], "制图精度为", PA * 100, "%"))print(paste(AccData[i, 1], "用户精度为", UA * 100, "%"))
}# Output overall classification accuracy and Kappa coefficient
print(paste("总体分类精度为", OA * 100, "%"))
print(paste("Kappa系数为", K[["Unweighted"]][["value"]] * 100, "%"))# Save results to Excel
output_file <- "D:/R_proj/a绘图demo/bKappa/classification_accuracy_results1.xlsx"
write.xlsx(list("Mapping Accuracy" = mapping_accuracy,"User Accuracy" = user_accuracy,"Overall Accuracy" = data.frame(OverallAccuracy = OA * 100),"Kappa Coefficient" = data.frame(Kappa = K[["Unweighted"]][["value"]] * 100)
), file = output_file)print(paste("Results saved to", output_file))

混淆矩阵:

 

结果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/882107.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是回溯法,给个C#简单的例子。

回溯法(Backtracking)是一种搜索算法,主要用于解决组合优化问题,如全排列、子集、数独、八皇后问题等。它通过递归的方式尝试所有可能的解决方案,并在发现当前路径无法得到正确答案时回溯到上一步,继续尝试其他路径。 回溯法的基本思想选择:选择一个可能的选项。 约束:…

如何挑选项目型企业管理系统?10款软件为你解答

本文介绍了以下10款项目型企业管理系统:1.Worktile;2.PingCode;3.Teambition;4.石墨文档;5.蓝鲸智云;6.Trello;7.Asana;8.Monday.com;9.Jira;10.Basecamp。在日益复杂的项目管理环境中,很多企业面临一个共同的挑战:如何高效、精准地管理多个项目、协调各方资源,并…

【新零售】新零售ERP如何对接第三方WMS

一、新零售业务中仓储相关的业务场景 在新零售的业务模式中,由于涉及到的SKU种类巨多,同时门店覆盖的地域广泛,再加上新零售业态有多种多样的玩法(即时零售、全渠道一盘货等),所以会对仓储物流方面提出更多、更高的要求。 1.1 常规备货、发货的场景 新零售公司得从供应商…

014 Async函数

ES2017标准引入了async函数,使得异步操作变得更加方便 async函数可以将异步操作变为同步操作 1、实例代码function print(){setTimeout(()=>{console.log("定时器");},1000)console.log("Hello");}print() 2、基本语法function timeout(ms){return …

办公可视化工具私有化:企业数字化转型的秘密武器

如果你正在寻找一款既能满足数据安全需求,又具备强大定制化能力的办公可视化工具,板栗看板的私有化部署方案将是你的不二之选。立即联系我们,了解更多关于板栗看板私有化部署的详细信息!在数字化转型的浪潮中,办公可视化工具(如看板、仪表盘、项目管理工具等)已经成为企…

Redis基础-跳表

一、跳表原理1.1、什么是跳表跳跃表是一种随机化的数据结构,在查找、插入和删除这些字典操作上,其效率可比拟于平衡二叉树(如红黑树),大多数操作只需要O(log n)平均时间,但它的代码以及原理更简单。跳跃表的定义如下:“Skip lists are data structures that use probab…

Linux Android 下的内存注入手段

ptrace_inject_mem long ptrace(enum __ptrace_request request, pid_t pid,void *addr, void *data);请求 (Request) 值 说明PTRACE_TRACEME 0 使调用进程变为被跟踪进程。在子进程调用 ptrace(PTRACE_TRACEME, ...) 后,父进程可以使用 PTRACE_ATTACH 进行跟踪。PTRACE_PEEKT…

解决 idea 无法创建java8 模版

解决 idea 无法创建java8 模版由于 Spring 官方不再维护 旧的版本了导致的 https://start.spring.io 解决方式很简单 切换到 阿里源就可以了 https://start.aliyun.com/ 项目生成 成功总结 :IDEA 内置的 Spring Initializr 创建 Spring Boot 项目实际上是依赖官方链接功能,官…

高性价比云服务新选择

在数字化转型加速的当下,寻找稳定可靠的云服务成为许多用户的刚需。深度测试,3丰云平台提供的免费云服务器**展现出超出预期的实用性,现将其核心优势整理如下: 一、零门槛云资源获取 通过官网([https://www.sanfengyun.com)的清晰引导,用户可快速完成注册并开通免费云服…

MySQL索引、MVCC、锁问题

一、MySQL索引 1.1.索引简介 索引是一种数据库中的数据对象,它能够提高数据库中的数据检索速度.MySQL支持多种类型的索引,每种类型的索引有其特定的用途和性能特点. MySQL中的索引种类如下:B-Tree索引 数据结构B-Tree 根据叶子结点的存储数据的种类不同分为:聚簇索引(主键索引)…

OpenEuler部署DM8主备复制集群

DM8、主备复制案例说明: 在OpenEuler系统上部署DM8的主备复制架构。 系统环境: [root@node209 dm]# cat /etc/os-release NAME="openEuler" VERSION="20.03 (LTS-SP4)" ID="openEuler" VERSION_ID="20.03" PRETTY_NAME="openEu…

OpenEuler部署DM8主备复制

DM8、主备复制案例说明: 在OpenEuler系统上部署DM8的主备复制架构。 系统环境: [root@node209 dm]# cat /etc/os-release NAME="openEuler" VERSION="20.03 (LTS-SP4)" ID="openEuler" VERSION_ID="20.03" PRETTY_NAME="openEu…