def GetClassMetric(gtLabal, testLabel, numClass=-1, labelSet=npy.array([])):
if numClass>0:
labelSet=npy.arange(numClass)
else:
if labelSet.size()==0 or npy.min(labelSet)<0:
return
numClass=npy.max(labelSet)+1
confMat=npy.zeros((numClass,numClass),dtype=npy.float32)
vecOnes=npy.ones(len(gtLabal))
for ii in labelSet:
for jj in labelSet:
confMat[ii,jj]=npy.sum(vecOnes[npy.logical_and(testLabel==ii, gtLabal==jj)])
ccn=npy.diagonal(confMat)
oa=npy.sum(ccn)/npy.sum(confMat)
pa=ccn/npy.sum(confMat, axis=0)
ua=ccn/npy.sum(confMat, axis=1)
temp1=npy.sum(confMat)*npy.sum(ccn)-npy.sum(npy.sum(confMat,axis=1)*npy.sum(confMat,axis=0));
temp2=npy.power(npy.sum(confMat),2)-npy.sum(npy.sum(confMat,axis=1)*npy.sum(confMat,axis=0));
kappa=temp1/temp2
confMat=confMat.astype(npy.int32)
accMetric={"confMat":confMat, "oa":oa, "pa":pa, "ua":ua, "kappa": kappa}
return accMetric
评论列表
文章目录