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版权协议,转载请附上原文出处链接和本声明。