【问题标题】:How to find all the True Positives,negatives and False Positives and Negatives considering all the classes考虑到所有类,如何找到所有真阳性、阴性和假阳性和阴性
【发布时间】:2020-10-31 23:47:10
【问题描述】:

对于我知道所需输出的较小数据集,我也可以这样做

例如: 我有数据集:

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]

所以我想找到所有的 TP_total、TN_total、FP_total 和 FN_total 考虑每个标签'1','2','0','3'

我该怎么做

【问题讨论】:

  • 查看混淆矩阵,列代表实际类别,行代表预测类别

标签: python machine-learning scikit-learn classification


【解决方案1】:

在 Python 中,scikit-learn 包 (https://scikit-learn.org/stable/index.html) 提供了一个函数,该函数将返回分类问题(二进制或多类)的混淆矩阵,confusion_matrix 函数(请参阅 https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html)。使用混淆矩阵,您可以获得真阳性、真阴性、假阳性和假阴性。

下图(取自https://scikit-learn.org/stable/auto_examples/miscellaneous/plot_display_object_visualization.html#sphx-glr-auto-examples-miscellaneous-plot-display-object-visualization-py)说明了使用 scikit-learn 生成的二元分类混淆矩阵。在图中,假阳性在左上角(140),真阳性在右下角(5),假阴性在左下角(39),假阳性在右上角(3)。

在多类设置中,解释是相似的。但是,您的错误将与多个类相关联,而不仅仅是单个类(例如在二元分类设置中)。

我希望这可能会有所帮助!

【讨论】:

    【解决方案2】:

    由于您在问题中标记了Scikit-Learn,因此除了精度、召回率、准确度、F1-Score 和支持等各种分类指标外,您还可以获得关于真/假阳性和阴性的非常好的见解。 .. 直接使用 Classification ReportConfusion Matrix 返回您想要的内容(示例):

    tn, fp, fn, tp = confusion_matrix([0, 1, 0, 1], [1, 1, 1, 0]).ravel()
    

    或者你可以使用Plot Confusion Matrix来绘制它。

    示例在链接中


    以下是一些示例:

    【讨论】:

      猜你喜欢
      • 2016-02-03
      • 1970-01-01
      • 2015-09-28
      • 1970-01-01
      • 1970-01-01
      • 2018-04-22
      • 2021-11-15
      • 2017-06-08
      相关资源
      最近更新 更多