Python 保存混淆矩阵

Python 保存混淆矩阵,python,pandas,dataframe,confusion-matrix,Python,Pandas,Dataframe,Confusion Matrix,是否有可能保存由sklearn.metrics生成的混淆矩阵 我想将不同分类算法的多个结果保存在一个数组中,或者可能保存在一个数据帧中,这样我就可以显示哪种算法效果最好 print('Neural net: \n',confusion_matrix(Y_test, Y_pred), sep=' ') 如何在循环中保存生成的混淆矩阵?(我正在对一组200个不同的目标变量进行培训) 我在这里遇到了一些定义问题[array未定义,而在非[I]版本中,它运行平稳] 此外,我正在规范化混淆矩阵。如何在整

是否有可能保存由
sklearn.metrics
生成的混淆矩阵

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

print('Neural net: \n',confusion_matrix(Y_test, Y_pred), sep=' ')
如何在循环中保存生成的混淆矩阵?(我正在对一组200个不同的目标变量进行培训)

我在这里遇到了一些定义问题[array未定义,而在非[I]版本中,它运行平稳]

此外,我正在规范化混淆矩阵。如何在整个循环之后打印出混淆矩阵的平均结果?(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=[]
由于在声明期间并没有给出列表的大小,所以并没有分配任何空间。因此,我们不能为未分配的位置赋值

array[i]=some value, but no space is allocated for array
因此,如果您知道数组所需的大小,请在声明期间填充零,并以这种方式使用数组,或者在循环中使用array.append()方法

现在保存混淆矩阵: 由于混淆矩阵返回二维数组,您需要保存多个这样的数组,因此使用三维数组保存值

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)

您是否定义了
数组
?在python中,您需要先定义一个列表,然后才能为其元素赋值。非常感谢您的回答。我已经试过了,因为我有一个二进制分类,所以我把len(y_pred),len(y_pred)设置为2。我的混淆矩阵的维数为2x2。我尝试将问题缩小到3次迭代,并将第一个维度设置为3。然而,数组太小,甚至无法保存第一次迭代的结果?打印时混淆矩阵的输出也以某种方式采用[[fields]]格式。你知道我做错了什么吗?我的循环好像有点问题,在范围内(13,停止)。所以它抛出了一个IndexError异常,因为我的索引是13,但矩阵的维数是(3,2,2)。我把15作为一个停止点,并认为这将符合当时的尺寸/在范围(3)中使用i,因为将3作为第一个维度。混淆矩阵打印为[[result]],因为它是一维数组中的二维矩阵。
   matrix_result_average=matrix_result.mean(axis=0)