当有真阳性、真阴性、假阳性和假阴性时,我如何计算支持度?
How do I calculate support when having true posives, true negatives, false positives and false negatives?
不知何故,我对我的二进制 classifier 的评估并没有加起来。这是对我的模型的评价:
True Positive(TP) = 75
False Positive(FP) = 64
True Negative(TN) = 47
False Negative(FN) = 34
Accuracy of the binary classification = 0.554545
precision: [0.58024691 0.53956835]
recall: [0.42342342 0.68807339]
fscore: [0.48958333 0.60483871]
support: [111 109]
到目前为止它看起来不错,但我只是意识到它并没有真正加起来。正如我所见,它应该支持 return 每个 class 中的总真实值。因为我只有两个,75+47=122 而不是真正的 class 的 111。我知道这里 TP 和 FN 相加得到 111,TN 和 FP 相应地得到 109。还是我没有正确理解支持?在这里,第一个 class 假阳性被添加到真阴性中。这没有意义,是吗?我将如何解释这个数字?
所以要么我不明白支持是什么意思,要么我的代码有误,但我查看了文档并确保值 returned 也相应地分配给了混淆矩阵作为 precision_recall_fscore_support。所以请在这里解释我做错了什么:
from sklearn.metrics import confusion_matrix
from sklearn.metrics import precision_recall_fscore_support as score
def evaluation(y_test, y_pred):
cm = confusion_matrix(y_test, y_pred)
TN, FP, FN, TP = confusion_matrix(y_test, y_pred).ravel()
print('True Positive(TP) = ', TP)
print('False Positive(FP) = ', FP)
print('True Negative(TN) = ', TN)
print('False Negative(FN) = ', FN)
accuracy = (TP+TN) /(TP+FP+TN+FN)
print('Accuracy of the binary classification = {:0.6f}'.format(accuracy))
precision, recall, fscore, support = score(y_test, y_pred)
print('precision: {}'.format(precision))
print('recall: {}'.format(recall))
print('fscore: {}'.format(fscore))
print('support: {}'.format(support))
evaluation(y_test, prediction > 0.5)
支持度是您拥有的真实正面和负面案例的数量。在您的示例中,有 109 (75+34) 个真正的正例和 111 (64+47) 个真正的负例。
不知何故,我对我的二进制 classifier 的评估并没有加起来。这是对我的模型的评价:
True Positive(TP) = 75
False Positive(FP) = 64
True Negative(TN) = 47
False Negative(FN) = 34
Accuracy of the binary classification = 0.554545
precision: [0.58024691 0.53956835]
recall: [0.42342342 0.68807339]
fscore: [0.48958333 0.60483871]
support: [111 109]
到目前为止它看起来不错,但我只是意识到它并没有真正加起来。正如我所见,它应该支持 return 每个 class 中的总真实值。因为我只有两个,75+47=122 而不是真正的 class 的 111。我知道这里 TP 和 FN 相加得到 111,TN 和 FP 相应地得到 109。还是我没有正确理解支持?在这里,第一个 class 假阳性被添加到真阴性中。这没有意义,是吗?我将如何解释这个数字?
所以要么我不明白支持是什么意思,要么我的代码有误,但我查看了文档并确保值 returned 也相应地分配给了混淆矩阵作为 precision_recall_fscore_support。所以请在这里解释我做错了什么:
from sklearn.metrics import confusion_matrix
from sklearn.metrics import precision_recall_fscore_support as score
def evaluation(y_test, y_pred):
cm = confusion_matrix(y_test, y_pred)
TN, FP, FN, TP = confusion_matrix(y_test, y_pred).ravel()
print('True Positive(TP) = ', TP)
print('False Positive(FP) = ', FP)
print('True Negative(TN) = ', TN)
print('False Negative(FN) = ', FN)
accuracy = (TP+TN) /(TP+FP+TN+FN)
print('Accuracy of the binary classification = {:0.6f}'.format(accuracy))
precision, recall, fscore, support = score(y_test, y_pred)
print('precision: {}'.format(precision))
print('recall: {}'.format(recall))
print('fscore: {}'.format(fscore))
print('support: {}'.format(support))
evaluation(y_test, prediction > 0.5)
支持度是您拥有的真实正面和负面案例的数量。在您的示例中,有 109 (75+34) 个真正的正例和 111 (64+47) 个真正的负例。