为什么Sklearn

时间:2016-06-22 11:58:59

标签: python python-2.7 python-3.x scikit-learn confusion-matrix

如果我使用metrics.precision_score,metrics.recall_score,metrics.f1得分分别使用metrics.classification_port和相同的metriceses,那么它们之间的区别(召回,精确,fi-score)有什么区别?

可以请某人查看此代码并解释其中的差异

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分数不匹配。 enter image description here

2 个答案:

答案 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)