有人对此问题提出了一些疑问,但我一直未能找到答案。运行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"
被分类为“ Head-up
”的次数为80%,"Grazing"
被分类为15%,"Unknown"
被分类为5%。这就是我的想法:
class Head-up Vigilance Grazing Unknown etc..
Head-up % % % %
Vigilance % % % %
Grazing % % % %
Unknown % % % %
etc.. % % % %
我总共有9个课程,分别是"Head-up"
,"Grazing"
,"Browsing"
,"Vigilance"
,"Unknown"
,"Moving"
,{{1 }},"Grooming"
,"Fleeing"
。
现在,可以使用"Resting"
或任何其他软件包来完成此操作吗?如果不是,是否有相对简单的方法来编码此过程?至少有人能让我走上正确的路吗?
感谢您的帮助!
答案 0 :(得分:1)
考虑到您所有的文件都在"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%总和的参数
答案 1 :(得分:-1)
函数table()
将起作用。在这里,我写了一个有关其工作原理的简单示例:
predicted<-c(1,0,0,1)
observed<- c(1,1,0,1)
data<-data.frame(predicted, observed)
table(data)