无法访问 SVM.SVC.score Scikit-learn Python 中的混淆矩阵

数据挖掘 Python 分类 scikit-学习 支持向量机 主成分分析
2022-03-02 19:22:24

我使用 SVM.SVC 函数进行分类。但是当我想计算加权和未加权平均准确率时,我无法访问混淆矩阵。因为 svm.SVC.score 只提供分类器准确率百分比。如何计算 WAR 和 UAR?

您可以在下面找到我的部分脚本:

'''

    scaler = StandardScaler()
    scaler.fit(trainX)
    trainXsc = scaler.transform(trainX)
    testXsc = scaler.transform(testX)

    pca = KernelPCA(n_components=j, kernel="sigmoid", random_state=1)  

    pca.fit(trainXsc)     # fit pca kernel with train data

    trainXtr    = pca.transform(trainXsc) # transform FV with PCA and dimension reduction
    testXtr     = pca.transform(testXsc)

    svmObject   = svm.SVC(C=2.0, kernel='rbf', degree=3, gamma='scale', coef0=0.0, shrinking=True,
                  probability=False, tol=0.001, cache_size=200, class_weight=None,
                  verbose=False, max_iter=-1, decision_function_shape='ovo', random_state=None)
                                        # SVM Kernel Function

    svmObject.fit(trainXtr, trainY)      # train SVM kernel with train FV

    result = svmObject.score(testXtr, testY) 

'''

1个回答

您应该使用该方法,而不是score在您训练的模型上使用该predict方法。

然后,您可以将结果从 sklearn 传递到混淆矩阵函数中:

from sklearn.metrics import confusion_matrix
y_pred = svmObject.predict(X)
cm = confusion_matrix(y_true, y_pred, sample_weight=sample_weight,
                      labels=labels, normalize=normalize)

还有一个不错的函数叫做plot_confusion_matrix

from sklearn.metrics import plot_confusion_matrix

plot_confusion_matrix(svmObject, testXtr, testY)
plt.show()