r - 在R中制作错误分类表
问题描述
关于这个问题有几个问题,但我无法找到我的问题的答案。运行KNN
算法后,我创建了一个"observed"
/"predicted"
文件。"observed"
是真实事件,而"predicted"
是算法分类的事件。我有多个文件,所有文件的名称都遵循以下模式:"accuracycollar4136*_4136*.0.*.csv"
. 这是一个小样本:
> sample<-fread("accuracycollar41361_41366.0.8.csv")
> print(sample)
V1 observed predicted
1: 1 Head-up Grazing
2: 2 Head-up Head-up
3: 3 Head-up Head-up
4: 4 Head-up Head-up
5: 5 Head-up Head-up
---
236: 236 Unknown Head-up
237: 237 Unknown Grazing
238: 238 Vigilance Grazing
239: 239 Unknown Grazing
240: 240 Unknown Head-up
我已经计算了不同的分类准确度度量。但是,我接下来想做的是:
1)创建一个for
循环读取每个"accuracycollar4136*_4136*.0.*.csv"
文件。
2)对于每个文件,我想创建一个汇总错误分类的表格。
3)理想情况下,我想最终得到一个百分比/概率表,说明一个事件被归类为另一个事件的比例。例如,假设"Head-up"
80% 的时间被归类为 " Head-up
",15% 的时间为"Grazing"
和 5% 的时间为"Unknown"
。这是我的想法:
class Head-up Vigilance Grazing Unknown etc..
Head-up % % % %
Vigilance % % % %
Grazing % % % %
Unknown % % % %
etc.. % % % %
我总共有 9 个班级,分别是"Head-up"
, "Grazing"
, "Browsing"
, "Vigilance"
, "Unknown"
, "Moving"
, "Grooming"
, "Fleeing"
, "Resting"
.
现在,这可以用caret
或任何其他包来完成吗?如果没有,是否有一种相对简单的方法来编写这样的过程?至少有人能让我走上正轨吗?
任何帮助表示赞赏!
解决方案
考虑到你所有的文件都在"your folder"
(没有别的)
files = as.list(list.files(path = "your folder"))
如果不是这种情况,您只需将文件名列表传递给files
下一步即可
miss_class = lapply(files, function(x){
data = read.csv(x)
prop.table(table(data$observed,data$predicted),margin=1)
})
这将生成一个百分比表列表,每个文件对应一个your folder
. 这margin = 1
意味着百分比表将对行求和 100%。您可以将列更改为 2 或删除整个表 100% 总和的参数
推荐阅读
- angularjs - 当我选择特定选项时,ng-repeat 未显示数组的所有值
- docker - 使用 Docker Registry API 获取托管在 Docker Hub 上的公共 Docker 映像的清单
- sql - SQL 差距和孤岛问题的扭曲——根据前一个标志的持续时间重置一个标志
- intellij-idea - 如何在 IntelliJ IDEA 2019.2 中以全屏模式隐藏标题栏?
- sql - 表类型空验证
- android - 尝试生成签名的 apk 时,Android Studio 3.4.2 出现“目标文件夹不存在或不可写”错误
- swift - 无法保存数据并从关闭中重新加载表视图
- arraylist - RecyclerView 中的两个arrayList
- crystal-lang - 如何从同一模块内的类中调用方法
- fortran - 在 Fortran 中是否有一种简短、可移植的方式来指定“种类”?