Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
4年前关闭。
我已经在Python中训练了一个分类器,当我进行新分类时,我想找到真实的肯定,真实的否定,错误的肯定,错误的否定。
事实是,每次我的true_labels都包含一个值点,因为在我正在研究的问题中,我只有一个标签,并且我想看看分类器在识别此标签时对新数据的表现如何。例如:
当然`len(labels_true)= len(labels_predicted)。由于我只有一个真实标签,我该如何计算以上指标?
编辑:这是一个完整的混乱矩阵
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
4年前关闭。
我已经在Python中训练了一个分类器,当我进行新分类时,我想找到真实的肯定,真实的否定,错误的肯定,错误的否定。
事实是,每次我的true_labels都包含一个值点,因为在我正在研究的问题中,我只有一个标签,并且我想看看分类器在识别此标签时对新数据的表现如何。例如:
labels_true = [2, 2, 2, 2, ..., 2]
labels_predicted = [2, 2, 23, 2, 2, 2, 2, 21, ..., 2, 2, 2, 2]
当然`len(labels_true)= len(labels_predicted)。由于我只有一个真实标签,我该如何计算以上指标?
最佳答案
如果您的label_true
仅由true
值组成,则您只能找到真阳性(TP)和假阴性(FN),因为没有可以找到(真阴性TN)或缺失(假阳性FP)的假值
TP,TN,FP,FN适用于二进制分类问题。您要么分析整个混乱矩阵,要么进行装箱以得到二元问题
这是分仓的解决方案:
from collections import Counter
truth = [1, 2, 1, 2, 1, 1, 1, 2, 1, 3, 4, 1]
prediction = [1, 1, 2, 1, 1, 2, 1, 2, 1, 4, 4, 3]
confusion_matrix = Counter()
#say class 1, 3 are true; all other classes are false
positives = [1, 3]
binary_truth = [x in positives for x in truth]
binary_prediction = [x in positives for x in prediction]
print binary_truth
print binary_prediction
for t, p in zip(binary_truth, binary_prediction):
confusion_matrix[t,p] += 1
print "TP: {} TN: {} FP: {} FN: {}".format(confusion_matrix[True,True], confusion_matrix[False,False], confusion_matrix[False,True], confusion_matrix[True,False])
编辑:这是一个完整的混乱矩阵
from collections import Counter
truth = [1, 2, 1, 2, 1, 1, 1, 2, 1, 3, 4, 1]
prediction = [1, 1, 2, 1, 1, 2, 1, 2, 1, 4, 4, 3]
# make confusion matrix
confusion_matrix = Counter()
for t, p in zip(truth, prediction):
confusion_matrix[t,p] += 1
# print confusion matrix
labels = set(truth + prediction)
print "t/p",
for p in sorted(labels):
print p,
print
for t in sorted(labels):
print t,
for p in sorted(labels):
print confusion_matrix[t,p],
print
关于python - 如何在Python中找到正确的肯定,正确的否定,错误的肯定,错误的否定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29350727/
10-10 20:10