保存混淆矩阵

Saving confusion matrix

sklearn.metrics生成的混淆矩阵是否可以保存?

我想将不同分类算法的多个结果保存在一个数组或一个 pandas 数据框中,这样我就可以显示哪种算法效果最好。

print('Neural net: \n',confusion_matrix(Y_test, Y_pred), sep=' ')

如何在循环中保存生成的混淆矩阵? (我正在训练一组 200 个不同的目标变量)

array[i] = confusion_matrix(Y_test,Y_pred) 

我 运行 在这里遇到一些定义问题 [数组未定义而在非 [i] - 版本中它 运行s 顺利]

此外,我正在标准化混淆矩阵。我怎样才能在整个循环后打印出混淆矩阵的平均结果? (200个不同混淆矩阵的平均值)

我对 python 还不是很流利。

我不确定你所说的对一组目标变量进行训练是什么意思(请详细说明),但这里是使用 numpy.

对混淆矩阵进行平均的开始

首先创建一个空的结果矩阵,它是三维的,大小为 200 个堆叠混淆矩阵。然后在 for 循环中将它们一个接一个地填充。最后将生成的矩阵沿目标维度进行平均,得到平均混淆矩阵。

import numpy as np

N = len(Y_pred)
result = np.zeros((len(targets), N, N))
for i, target in enumerate(targets):
    result[i] = confusion_matrix(Y_test, Y_pred) # do someting with target?
print(result.mean(axis=0))

首先遇到数组未定义的问题。 在 python 列表中声明为:

array=[]

由于在声明时没有给出列表的大小,因此没有分配 space。所以没分配的地方不能赋值。

array[i]=some value, but no space is allocated for array

因此,如果您知道所需的数组大小,请在声明期间填充零并以这种方式使用数组或在循环内使用 array.append() 方法。

现在保存混淆矩阵: 由于混淆矩阵 returns 二维数组,您需要保存多个这样的数组,因此使用 3-D 数组来保存值。

import numpy as np
matrix_result=np.zeroes((200,len(y_pred),len(y_pred)))
for i in range(200):
    matrix_result[i]=confusion_matrix(X_pred,y_pred)

平均

   matrix_result_average=matrix_result.mean(axis=0)