我正在为六个类构建一个混淆矩阵,我使用scikit_learn confusion matrix作为绘制矩阵的基本代码。 我面临的问题是,每当我重新训练线性SVM分类器时,每次训练会话都会改变混淆矩阵。预测标签的数量保持不变,没有。对于每一次交互,真实标签的含义也保持不变。我无法理解为什么混淆矩阵会改变这种方式。对角元素也没有任何意义。
请指导我该怎么做。
def plot_confusion_matrix(cm, title='Confusion matrix', cmap=plt.cm.Blues):
plt.imshow(cm, interpolation='nearest', cmap=cmap)
plt.title(title)
plt.colorbar()
tick_marks = np.arange(6)
plt.xticks(tick_marks, names, rotation=45)
plt.yticks(tick_marks, names)
plt.tight_layout()
plt.ylabel('True label')
plt.xlabel('Predicted label')
# this is the main function i am using
# here names is a list of six titles e.g. names = ['a', 'b', 'c', 'd', 'e', 'f']
#Following is the code that I am using to call the function
cm = confusion_matrix(labels_test, predicted)
np.set_printoptions(precision=2)
print('Confusion matrix, without normalization')
print(cm)
plt.figure()
plot_confusion_matrix(cm)
cm_normalized = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
print('Normalized confusion matrix')
print(cm_normalized)
plt.figure()
plot_confusion_matrix(cm_normalized, title='Normalized confusion matrix')
plt.show()
答案 0 :(得分:0)
混淆矩阵可以让您了解分类器在哪里做得很好(真正的积极因素)和不在哪里(误报)。
混淆矩阵的对角线告诉您特定类被正确分类的次数(真阳性)。
似乎重新训练数据集时,分类器会因迭代而发生变化。因此,真阳性/假阳性/真阴性/假阴性的数量可能不同。