我能够对较小的数据集执行相同的操作,因为我知道期望的输出
例如:我有以下数据集:
y_true=[1,1,0,1]y_pred=[1,0,0,0]
我能够编写一个函数来查找所有真阳性和假阳性以及真阴性和假阴性:
def measures(y_pred, y_true): TP = 0 FP = 0 TN = 0 FN = 0 for i in range(len(y_pred)): if y_true[i]==y_pred[i]==1: TP += 1 if y_pred[i]==1 and y_true[i]!=y_pred[i]: FP += 1 if y_true[i]==y_pred[i]==0: TN += 1 if y_pred[i]==0 and y_true[i]!=y_pred[i]: FN += 1 return(TP, FP, TN, FN)
但是,如果我想对多个标签执行相同的操作,比如这样:
y_true=[1,2,0,1,3]y_pred=[1,0,3,2,1]
那么我想找到考虑每个标签'1','2','0','3'
的TP_total、TN_total、FP_total和FN_total
我该如何做呢
回答:
由于您在问题中标记了Scikit-Learn
,您可以使用分类报告和混淆矩阵来直接获取关于真/假阳性和阴性的非常好的见解,以及各种分类指标,如精确度、召回率、准确率、F1分数和支持度…(示例):
tn, fp, fn, tp = confusion_matrix([0, 1, 0, 1], [1, 1, 1, 0]).ravel()
或者您可以使用绘制混淆矩阵来绘制它。
(示例在链接中)