你好我正在使用sklearn,为了更好地理解指标,我遵循了以下的precision_score示例:
from sklearn.metrics import precision_score
y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 2, 1, 0, 0, 1]
print(precision_score(y_true, y_pred, average='macro'))
我得到的结果如下:
0.222222222222
我理解sklearn会按照以下步骤计算结果:
最后sklearn计算所有三个标签的平均精度:precision = (0.66 + 0 + 0) / 3 = 0.22
如果我们采用这些参数,则给出了这个结果:
precision_score(y_true, y_pred, average='macro')
另一方面,如果我们采用这个参数,改变average ='micro':
precision_score(y_true, y_pred, average='micro')
然后我们得到:
0.33
如果我们取平均='加权':
precision_score(y_true, y_pred, average='weighted')
然后我们获得:
0.22.
我不太清楚当平均参数设置为'加权'或'微'时,sklearn如何计算此指标,如果有人能给我一个明确的解释,我真的很感激。
答案 0 :(得分:2)
'micro'
:
通过将标签指示符矩阵的每个元素视为标签来全局计算指标。
'macro'
:
计算每个标签的指标,找出未加权的均值。 不会考虑标签不平衡。
'weighted'
:
计算每个标签的指标,并找到它们的平均值,按支持加权(每个标签的真实实例数)。
'samples'
:
计算每个实例的指标,并找出它们的平均值。
http://scikit-learn.org/stable/modules/generated/sklearn.metrics.average_precision_score.html
对于支持措施: http://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html
基本上是班级会员。
<强> 3.3.2.12。接收机工作特性(ROC)
函数roc_curve计算接收器工作特性曲线或ROC曲线。引用维基百科:
“接收器操作特性(ROC),或简称为ROC曲线,是图解说明二元分类器系统的性能,因为其鉴别阈值是变化的。它是通过在各种阈值设置下绘制阳性中的真阳性分数(TPR =真阳性率)与阴性中的假阳性分数(FPR =假阳性率)来绘制的。 TPR也称为敏感性,FPR是一个减去特异性或真实负面率。“
TN /真阴性:病例呈阴性,预测为阴性。
TP / True Positive:病例呈阳性且预测为阳性。confusion = metrics.confusion_matrix(expected, predicted)
print confusion,"\n"
TN, FP = confusion[0, 0], confusion[0, 1]
FN, TP = confusion[1, 0], confusion[1, 1]
print 'Specificity: ', round(TN / float(TN + FP),3)*100, "\n"
print 'Sensitivity: ', round(TP / float(TP + FN),3)*100, "(Recall)"