微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从Scikit学习中获得针对多类分类的特异性和阴性预测值?

如何解决如何从Scikit学习中获得针对多类分类的特异性和阴性预测值?

当前,scikit-learn的分类报告(sklearn.metrics.classification_report-link)不包括特异性和阴性预测值(NPV)。

因此,我做了自己的分类报告功能

def custom_classification_report(y_true,y_pred):
    tp,fn,fp,tn = confusion_matrix(y_true,y_pred).ravel()
    acc = (tp+tn)/(tp+tn+fp+fn)
    sen = (tp)/(tp+fn)
    sp = (tn)/(tn+fp)
    ppv = (tp)/(tp+fp)
    npv = (tn)/(tn+fn)
    f1 = 2*(sen*ppv)/(sen+ppv)
    fpr = (fp)/(fp+tn)
    tpr = (tp)/(tp+fn)
    return (    '2X2 confusion matrix:',['TP',tp,'FP','FN','TN',tn],'Accuracy:',round(acc,3),'Sensitivity/Recall:',round(sen,'Specificity:',round(sp,'PPV/Precision:',round(ppv,'NPV:',round(npv,'F1-score:',round(f1,'False positive rate:',round(fpr,'True positive rate:',round(tpr,)

def auc_roc(y_true,y_pred_score):
    return ('AUC-ROC:',round(roc_auc_score(y_true,y_pred_score),3))

def avg_precision(y_true,y_pred_score,target_name):
    return ('Average precision:',round(average_precision_score(y_true,pos_label=target_name),3))
    tpr = (tp)/(tp+fn)
    return (    '2X2 confusion matrix:',)

def auc_roc(self,y_true,3))

def avg_precision(self,3))

当我将其用于二进制类分类时,它工作正常-

print('>> Custom classification report:\n',custom_classification_report(y_test,predicted_labels),'\n')

当我将同一行代码print('>> Custom classification report:\n','\n')用于多类分类时,它会给出错误ValueError: too many values to unpack (expected 4)。为什么会这样,如何解决

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。