可以请某人查看此代码并解释其中的差异
from sklearn.svm import LinearSVC
clf_svm_linear = LinearSVC(C=20.0)
clf_svm_linear.fit(X_train, y_train)
y_pred = clf_svm_linear.predict(X_test)
print ' Results on Validation data'
print metrics.classification_report(y_test, y_pred, target_names=['No Diabetes', 'Diabetes'])
print "==================================================================="
print "The accuracy on validation dataset of Linear SVM: \t", metrics.accuracy_score(y_test, y_pred)
print "Precision on validation dataset of Linear SVM: \t", metrics.precision_score(y_test, y_pred)
print "Recall on validation dataset of Linear SVM : \t", metrics.recall_score(y_test, y_pred)
print "F1 score on validation dataset of Linear SVM: \t", metrics.f1_score(y_test, y_pred)
当运行上面的代码时,我得到了这个结果,就像在pic中一样 当我独立打印他们的分数时,为什么报告中的平均/总数与精确度,召回率和f1分数不匹配。
答案 0 :(得分:1)
precision_score 不是一个平均值,它是精确的,其中一个类是正面的(在你的情况下 - 糖尿病),这就是为什么你的精确度调用对应于糖尿病的精确度总结,同样 - 回忆和这些家伙的F1。采用不对称度量的平均值使其平衡,它与常规"不同。度量。
为了获得平均值,您可以致电
print 0.5 * (metrics.precision_score(y_test, y_pred, pos_label='No Diabetes') +
metrics.precision_score(y_test, y_pred, pos_label='Diabetes'))
答案 1 :(得分:0)