混乱矩阵随着每一次交互而变化

时间:2016-05-22 23:57:04

标签: python scikit-learn svm confusion-matrix

我正在为六个类构建一个混淆矩阵,我使用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()

1 个答案:

答案 0 :(得分:0)

混淆矩阵可以让您了解分类器在哪里做得很好(真正的积极因素)和不在哪里(误报)。

混淆矩阵的对角线告诉您特定类被正确分类的次数(真阳性)。

似乎重新训练数据集时,分类器会因迭代而发生变化。因此,真阳性/假阳性/真阴性/假阴性的数量可能不同。