计算混淆矩阵
Calculating Confusion matrices
我目前正在计算多个混淆矩阵并对其进行归一化。
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
矩阵。你可以这样做:
if np.any(valids):
matrix_confusion_mean = np.mean(matrix_confusion[valids], axis=0)
else:
matrix_confusion_mean = np.zeros((2, 2))
我目前正在计算多个混淆矩阵并对其进行归一化。
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
矩阵。你可以这样做:
if np.any(valids):
matrix_confusion_mean = np.mean(matrix_confusion[valids], axis=0)
else:
matrix_confusion_mean = np.zeros((2, 2))