使用confusionMatrix计算精确度,召回率和F分数

时间:2019-08-06 14:32:37

标签: r algorithm statistics confusion-matrix

我们开发了一种算法,该算法可从加速度计数据中检测出每台阻力训练机的重复次数。人们每台机器总是执行10次重复2次。

  

n人x 10次重复x 2组=执行的重复总数。

现在,我想用precision包中的recall计算f-scoreconfusionMatrixcaret

我制作了一个xlsx文件,其中两行分别代表真实的(上一行)和算法预测的重复次数(下一行),如图所示:

enter image description here

我编写了以下代码:

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")

结果如下:

enter image description here

如您在confusionMatrix中所见,计数了385组(一组由10个重复组成),而不是3850个重复。现在,我想知道,从方法上讲,我该如何获得confusionMatrix来计算重复次数而不是集合数。

就我而言,错误率是1-Accuracy = 2.5%。 1套包含10个重复。由于设置与重复的关系是10的因数,因此我可以简单地将错误率除以10,然后重新计算精度1-0.0025 = 0.9975。但是,

  • 有人知道如何使用confusionMatrix解决此问题吗?

提前感谢您的脑力和经验!

1 个答案:

答案 0 :(得分:0)

有一个理论上的错误。

建立一个混淆矩阵,以比较具有预测值的观察结果,R将数据转换为因子,然后将值{10,11}解释为该因子的水平而不是数值,则R计算平局。简而言之,您对什么是混淆矩阵有一个错误的认识

此外,任何模型都将执行偏差预测,因为总的来说,您的数据非常不平衡,没有什么可预测的

那么,您就不会遇到编程问题,这是理论上的问题。访问Stack Exchange清除您的想法。

Visit me!