了解 Precision、Recall 和 F-mesure
Posted
技术标签:
【中文标题】了解 Precision、Recall 和 F-mesure【英文标题】:Understand Precision and recall and F-mesure 【发布时间】:2020-03-12 16:01:17 【问题描述】:我正在尝试显示精度、召回率和 F-mesure,但它们都非常低,你知道为什么吗?
total_verbatim = X.shape[0]
print(total_verbatim)
labels = np.zeros(total_verbatim);#creation de variable ; consulter les mal étiquettés +bien étiquettés
#error avec configuration avec l'ensemble
labels[1:1315]=0; #motivations
labels[1316:1891]=1;#freins
cv_splitter = KFold(n_splits=10, shuffle=False, random_state=None)
model1 = LinearSVC()
model2 = MultinomialNB()
models = [model1, model2]
for model in models:
#verbatim_preprocess = np.array(verbatim_train_remove_stop_words_lemmatize)
y_pred = cross_val_predict(model, X, labels, cv=cv_splitter)
print("Model: ".format(model))
print("matrice confusion: ".format(confusion_matrix(labels, y_pred)))
print("Accuracy: ".format(accuracy_score(labels, y_pred)))
print("Precision: ".format(precision_score(labels, y_pred)))
print("Recall: ".format(recall_score(labels, y_pred)))
print("F mesure: ".format(f1_score(labels, y_pred)))
有结果,当手动计算时,精度和召回率要高得多:
Model: LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,
intercept_scaling=1, loss='squared_hinge', max_iter=1000,
multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,
verbose=0)
matrice confusion: [[963 353]
[518 57]]
Accuracy: 0.5393971443680592
Precision: 0.13902439024390245
Recall: 0.09913043478260869
F mesure: 0.11573604060913706
Model: MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True)
matrice confusion: [[1248 68]
[ 574 1]]
Accuracy: 0.6604970914859862
Precision: 0.014492753623188406
Recall: 0.0017391304347826088
F mesure: 0.0031055900621118015
【问题讨论】:
【参考方案1】:哎呀。分类模型不好。
只看第一个模型的混淆矩阵:
matrice confusion: [[963 353]
[518 57]]
您可以看到第 1 类的 353 个样本和第 2 类的 518 个样本分别被错误分类。
理想情况下,您应该只在对角线上进行计数。
此外,准确度几乎为 0.5,即您在机会水平上进行预测。
同样,对于模型 2。
要改进模型,请尝试使用模型的不同超参数和不同的折叠数。
做一个GridSearch
see here
【讨论】:
此外,由于数据集不平衡,MultinimialNB 的准确度仅(相对)高。主要预测 0 类是过拟合的。以上是关于了解 Precision、Recall 和 F-mesure的主要内容,如果未能解决你的问题,请参考以下文章
使用具有不同分类器的 sklearn precision_recall_curve 函数
ROC,AUC,Precision,Recall,F1的介绍与计算(转)