如何使用SVM的Linear svc获得精确度和召回率?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用SVM的Linear svc获得精确度和召回率?相关的知识,希望对你有一定的参考价值。

我使用SVM的Linear svc来训练和测试数据。我能够在我的数据集上获得SVM的准确性。但是,除了准确性,我需要精确和回忆。任何人都可以建议我如何计算精度和召回率。

MyCode:

from sklearn.preprocessing import MultiLabelBinarizer
from sklearn.model_selection import train_test_split
from sklearn.svm import LinearSVC
with open("/Users/abc/Desktop/reviews.txt") as f:
    reviews = f.read().split("
")
with open("/Users/abc/Desktop/labels.txt") as f:
    labels = f.read().split("
")

reviews_tokens = [review.split() for review in reviews]


onehot_enc = MultiLabelBinarizer()
onehot_enc.fit(reviews_tokens)


X_train, X_test, y_train, y_test = train_test_split(reviews_tokens, labels, test_size=0.20, random_state=None)

lsvm = LinearSVC()
lsvm.fit(onehot_enc.transform(X_train), y_train)
score = lsvm.score(onehot_enc.transform(X_test), y_test)
print("Score of SVM:" , score)
答案

你可以这样做:

from sklearn.metrics import confusion_matrix

predicted_y = lsvm.predict(X_test)
tn, fp, fn, tp = confusion_matrix(y_test, predicted_y).ravel()
precision_score = tp / (tp + fp)
recall_score = tp / (tp + fn)

有关详细信息,请参阅confusion_matrix文档

以上是关于如何使用SVM的Linear svc获得精确度和召回率?的主要内容,如果未能解决你的问题,请参考以下文章

sklearn.svm包中的SVC(kernel=”linear“)和LinearSVC的区别

LinearSVC 和 SVC(kernel="linear") 有啥区别?

调整参数 SVM

支持向量机SVM:SVC

LinearSVC() 与 SVC(kernel='linear')

吴裕雄 python 机器学习——支持向量机SVM非线性分类SVC模型