如何解决如何从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 举报,一经查实,本站将立刻删除。