如何在Python中计算多重混淆矩阵的总和?

How to calculate the sum of multiple confusion matrix in Python?

提问人:Haseeb Tariq 提问时间:9/28/2023 最后编辑:desertnautHaseeb Tariq 更新时间:9/28/2023 访问量:72

问:

我已将 5 个混淆矩阵的结果存储在一个数组中。现在我必须计算混淆矩阵的总和,然后我想用它来计算真阳性、假阳性、假阴性和真阴性。以下是我正在使用的代码:

cm_decision_tree = []

cm_decision_tree.append(confusion_matrix(y_test, decision_tree_pred))

print (cm_decision_tree)

[array([[ 0,  9],
        [ 4, 2]], dtype=int64),
 array([[ 4,  6],
        [1, 6]], dtype=int64),
 array([[ 1, 10],
        [ 0, 9]], dtype=int64),
 array([[ 4, 14],
        [ 5, 5]], dtype=int64),
 array([[ 0, 14],
        [ 7, 2]], dtype=int64)]

matrix_result_average=cm_decision_tree.mean(axis=0)

当我尝试使用上述代码段计算此结果的平均值时,出现此错误


1 from statistics import mean
2 matrix_result_average=cm_decision_tree.mean(axis=0)

AttributeError: 'list' object has no attribute 'mean'

我的预期结果是从多个混淆矩阵的总和中计算真阳性、假阳性、假阴性和真阴性。

python 列表 scikit-learn 混淆矩阵

评论


答:

1赞 Simon David 9/28/2023 #1

假设 sklearn.metrics.confusion_matrix 返回 一个 ,你的对象表示 's 的 a。要计算混淆矩阵的总和,您可以执行以下操作:np.ndarraycm_decision_treelistnumpy.ndarray

cm_decision_tree_summed = np.sum(cm_decision_tree, axis=0)
print(cm_decision_tree_summed)
# [[ 9 53]
#  [17 24]]

请注意,这个总和的混淆矩阵本身包含真阳性、假阳性等,这就是为什么没有额外的计算。

用于复制错误的代码:

import numpy as np

matrix_1 = np.array(
    [[0, 9],[4, 2]]
)
matrix_2 = np.array(
    [[4, 6], [1, 6]]
)
matrix_3 = np.array(
    [[1, 10], [0, 9]]
)
matrix_4 = np.array(
    [[4, 14], [5, 5]]
)
matrix_5 = np.array(
    [[0, 14], [7, 2]]
)

cm_decision_tree = [matrix_1, matrix_2, matrix_3, matrix_4, matrix_5]

matrix_result_average=cm_decision_tree.mean(axis=0)  # AttributeError: 'list' object has no attribute 'mean'