Python 计算混淆矩阵
我目前正在计算多个混淆矩阵并对其进行规范化Python 计算混淆矩阵,python,numpy,sklearn-pandas,confusion-matrix,Python,Numpy,Sklearn Pandas,Confusion Matrix,我目前正在计算多个混淆矩阵并对其进行规范化 for i in range(0,215) [...] matrix_confusion[i] = np.asarray(confusion_matrix(Y_test, Y_pred)) matrix_confusion[i] = matrix_confusion[i].astype(float) / matrix_confusion[i].sum(axis=1)[:,np.newaxis] 目标是计算上述循环中填充的所有混淆矩阵的平均
for i in range(0,215)
[...]
matrix_confusion[i] = np.asarray(confusion_matrix(Y_test, Y_pred))
matrix_confusion[i] = matrix_confusion[i].astype(float) /
matrix_confusion[i].sum(axis=1)[:,np.newaxis]
目标是计算上述循环中填充的所有混淆矩阵的平均值。问题是很多矩阵都没有填充,因为当出现ValueError时,我跳过了迭代。所以我有一些矩阵是空的(用零填充)
现在我想做以下几件事:
matrix_confusion = matrix_confusion[matrix_confusion!=0]
但这也消除了标准化计算的混淆矩阵中的0。如果我只想要一个表示循环中所有先前填充的2x2混淆矩阵的平均值的混淆矩阵,而不协调预填充的混淆矩阵,我该如何继续
#prefilling
matrix_confusion = np.zeros((200,2,2))
谢谢你的帮助 首先找到不全为零的矩阵:
valids = np.logical_or.reduce(matrix_confusion != 0, axis=(1, 2))
然后计算平均值:
matrix_confusion_mean = np.mean(matrix_confusion[valids], axis=0)
您仍然应该注意至少有一些矩阵是有效的,否则您将得到NaN
s的矩阵。你可以做:
if np.any(valids):
matrix_confusion_mean = np.mean(matrix_confusion[valids], axis=0)
else:
matrix_confusion_mean = np.zeros((2, 2))