针对2分类的一个混淆矩阵,及对应的各种指标表示。其中:
true condition:列表示真实类别;predicted condition:行表示预测的类别;
真实正类=true positive+false negative;真实负类=false positive+true negative;
预测的正类=true positive+false positive; 预测的负类=false negative+true negative。
1. 不同指标的含义
F measure&&G measure
传统的F measure(balanced F score,F1 score) 就是关于precision和recall的Harmonic均值(就是一种均值)其计算公式如下:
其中:
当F score为0的时候最差:即precision和recall中某个值或者都接近0,则该模型越差;
当F score为1的时候最好:即precision和recall同时越接近1则该模型越好。
ps:F1 score同样也被称为Sørensen–Dice coefficient或者说叫Dice similarity coefficient (DSC).
将上述式子表示成更通用的形式如下图:
其中F2,F0.5是相对F1两个常用的F measure:
当β=2,则表示recall的影响要大于precision;
当β=0.5,则表示precision的影响要大于recall.
G measure
相对于F measure 是一种Harmonic均值,G measure是一种geometric mean,同时也被称为 Fowlkes–Mallows index
SimpleITK计算dice系数及Hausdorff距离(python代码)
python中用SimpleITK自带函数实现这一功能呢,代码如下:
import numpy as np
import os
import SimpleITK as sitk
def file_name(file_dir):
L=[]
path_list = os.listdir(file_dir)
path_list.sort() #对读取的路径进行排序
for filename in path_list:
if 'nii' in filename:
L.append(os.path.join(filename))
return L
def computeQualityMeasures(lP,lT):
quality=dict()
labelPred=sitk.GetImageFromArray(lP, isVector=False)
labelTrue=sitk.GetImageFromArray(lT, isVector=False)
hausdorffcomputer=sitk.HausdorffDistanceImageFilter()
hausdorffcomputer.Execute(labelTrue>0.5,labelPred>0.5)
quality["avgHausdorff"]=hausdorffcomputer.GetAverageHausdorffDistance()
quality["Hausdorff"]=hausdorffcomputer.GetHausdorffDistance()
dicecomputer=sitk.LabelOverlapMeasuresImageFilter()
dicecomputer.Execute(labelTrue>0.5,labelPred>0.5)
quality["dice"]=dicecomputer.GetDiceCoefficient()
return quality
gtpath = ''
predpath = ''
gtnames = file_name(gtpath)
prednames = file_name(predpath)
labels_num = np.zeros(len(prednames))
NUM=[]
P=[]
for i in range(len(gtnames)):
gt = sitk.ReadImage(gtpath + gtnames[i])
pred = sitk.ReadImage(predpath + gtnames[i])
quality = computeQualityMeasures(pred,gt)
参考:
https://www.cnblogs.com/shouhuxianjian/p/7877911.html
https://blog.csdn.net/weixin_41783077/article/details/82990200
网友评论