Q 统计量的计算

    Q统计量和ROC曲线或者AUC统计量均是衡量分类器差别的重要统计量,ROC曲线可以由相关R包直接调用,本文用简单几行代码实现Q统计量的计算,具体文献可以参考Measures of Diversity in Classifier Ensembles and Their Relationship with the Ensemble Accuracy

##Q统计量是衡量分类器差别的重要统计量
##其计算建立在分类器关系矩阵上
##我们实现的原理首先是建立关系矩阵
##然后计算Q统计量
#Q值越大说明分类器差别越大,反之越小
real<-c(1,1,0,0,1,0)  #真实值
pre_a<-c(1,0,0,1,0,0)  #a分类器预测值
pre_b<-c(0,1,0,1,0,0)  #b分类器预测值


#建立与真是值得参考序列,若预测正确则为1,否则为0
func<-function(x){
     for(i in 1:length(x)){
         if(x[i]==real[i]){
             x[i]=1
         }else
             x[i]=0
      }
   return(x)
}

#主函数,其中调用上面的与真实值参考函数
nfunc<-function(x,y){
       x<-func(x)
       y<-func(y)
       n11<-0
       n10<-0
       n01<-0
       n00<-0
       for(i in 1:length(x)){
print(i)
           if(x[i]==1 & y[i]==1){
               n11<-n11+1
            } else if(x[i]==1 & y[i]==0){
               n10<-n10+1
            } else if(x[i]==0 & y[i]==1){
               n01<-n01+1
            } else
               n00<-n00+1
        }
   return(matrix(c(n11,n10,n01,n00),nrow=2,ncol=2))
}

#计算        
qnn<-nfunc(pre_a,pre_b)
Q<-(qnn[1,1]*qnn[2,2]-qnn[1,2]*qnn[2,1])/(qnn[1,1]*qnn[2,2]+qnn[1,2]*qnn[2,1])

   


版权声明:本文为zakachen原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。