这是classification_report
sklearn
的一个简单示例
from sklearn.metrics import classification_report
y_true = [0, 1, 2, 2, 2]
y_pred = [0, 0, 2, 2, 1]
target_names = ['class 0', 'class 1', 'class 2']
print(classification_report(y_true, y_pred, target_names=target_names))
# precision recall f1-score support
#
# class 0 0.50 1.00 0.67 1
# class 1 0.00 0.00 0.00 1
# class 2 1.00 0.67 0.80 3
#
#avg / total 0.70 0.60 0.61 5
我希望能够访问平均/总行数。例如,我想从报告中提取f1-score,即0.61。
如何访问classification_report
中的号码?
答案 0 :(得分:7)
您可以使用precision_recall_fscore_support
一次性获取所有内容
from sklearn.metrics import precision_recall_fscore_support as score
y_true = [0, 1, 2, 2, 2]
y_pred = [0, 0, 2, 2, 1]
precision,recall,fscore,support=score(y_true,y_pred,average='macro')
print 'Precision : {}'.format(precision)
print 'Recall : {}'.format(recall)
print 'F-score : {}'.format(fscore)
print 'Support : {}'.format(support)
这是模块的link
答案 1 :(得分:2)
classification_report是字符串所以我建议你使用来自scikit-learn的f1_score
SparseTensor
输出
答案 2 :(得分:2)
您可以使用以下命令将分类报告作为dict输出:
report = classification_report(y_true, y_pred, **output_dict=True** )
然后像在普通python dictionary中一样访问其单个值。
例如,宏指标:
macro_precision = report['macro avg']['precision']
macro_recall = report['macro avg']['recall']
macro_f1 = report['macro avg']['f1-score']
或准确性:
accuracy = report['accuracy']
答案 3 :(得分:-1)
您可以在内置的category_report中使用output_dict参数来返回字典:
classification_report(y_true,y_pred,output_dict=True)