Scikit-learn: 如何计算真负样本

我在使用Scikit-learn,需要从如下混淆矩阵中计算真阳性(TP)、假阳性(FP)、真负性(TN)和假负性(FN):

[[2 0 3 4] [0 4 5 1] [1 0 3 2] [5 0 0 4]]

我知道如何计算TP、FP和FN,但不知道如何计算TN。谁能告诉我?


回答:

我认为你应该以一对多的方式处理这个多类分类问题(因此,每个2×2表i测量的是一个二元分类问题的表现,即每个观测值是否属于标签i)。因此,你可以为每个单独的标签计算TP、FP、FN、TN。

import numpy as npconfusion_matrix = np.array([[2,0,3,4],                             [0,4,5,1],                             [1,0,3,2],                             [5,0,0,4]])def process_cm(confusion_mat, i=0, to_print=True):    # i表示选择哪个类别进行一对多计算    # 行表示实际观测值,列表示预测值    TP = confusion_mat[i,i]  # 正确标记为i    FP = confusion_mat[:,i].sum() - TP  # 错误标记为i    FN = confusion_mat[i,:].sum() - TP  # 错误标记为非i    TN = confusion_mat.sum().sum() - TP - FP - FN    if to_print:        print('TP: {}'.format(TP))        print('FP: {}'.format(FP))        print('FN: {}'.format(FN))        print('TN: {}'.format(TN))    return TP, FP, FN, TNfor i in range(4):    print('计算标签{}的2x2列联表'.format(i))    process_cm(confusion_matrix, i, to_print=True)计算标签0的2x2列联表TP: 2FP: 6FN: 7TN: 19计算标签1的2x2列联表TP: 4FP: 0FN: 6TN: 24计算标签2的2x2列联表TP: 3FP: 8FN: 3TN: 20计算标签3的2x2列联表TP: 4FP: 7FN: 5TN: 18

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注