我们开发了一种算法,该算法可从加速度计数据中检测出每台阻力训练机的重复次数。人们每台机器总是执行10次重复2次。
n人x 10次重复x 2组=执行的重复总数。
现在,我想用precision
包中的recall
计算f-score
,confusionMatrix
和caret
。
我制作了一个xlsx
文件,其中两行分别代表真实的(上一行)和算法预测的重复次数(下一行),如图所示:
我编写了以下代码:
reps_prec_phone1<- read.xlsx("Reps_for_Precision_Recall_FSCORE.xlsx", sheet = "2Vec_Phone1", startRow = 0, colNames = FALSE)
reps_prec_pred_phone1<-as.factor(reps_prec_phone1[1,])
reps_prec_real_Phone1<-as.factor(reps_prec_phone1[2,])
result_phone1 <- confusionMatrix(reps_prec_pred_phone1, reps_prec_real_Phone1, mode="prec_recall")
结果如下:
如您在confusionMatrix
中所见,计数了385组(一组由10个重复组成),而不是3850
个重复。现在,我想知道,从方法上讲,我该如何获得confusionMatrix
来计算重复次数而不是集合数。
就我而言,错误率是1-Accuracy = 2.5%
。 1套包含10个重复。由于设置与重复的关系是10的因数,因此我可以简单地将错误率除以10,然后重新计算精度1-0.0025 = 0.9975
。但是,
confusionMatrix
解决此问题吗? 提前感谢您的脑力和经验!
答案 0 :(得分:0)
有一个理论上的错误。
建立一个混淆矩阵,以比较具有预测值的观察结果,R
将数据转换为因子,然后将值{10,11}解释为该因子的水平而不是数值,则R
计算平局。简而言之,您对什么是混淆矩阵有一个错误的认识。
此外,任何模型都将执行偏差预测,因为总的来说,您的数据非常不平衡,没有什么可预测的。
那么,您就不会遇到编程问题,这是理论上的问题。访问Stack Exchange清除您的想法。