访问分类报告中的数字 - sklearn

Posted

技术标签:

【中文标题】访问分类报告中的数字 - sklearn【英文标题】:access to numbers in classification_report - sklearn 【发布时间】:2018-07-03 05:25:30 【问题描述】:

这是sklearnclassification_report的简单示例

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中的号码?

【问题讨论】:

您对 f1-score 或从分类报告中提取 f1-score 感兴趣吗? @PratikKumar 从分类报告中提取。我还需要其他报告。 【参考方案1】:

您可以使用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

【讨论】:

答案是正确的,但是请注意你使用了错误的参数,因为第一个参数是y_true,第二个应该是y_pred 这也适用于多类数据集吗?【参考方案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】:

您可以使用内置分类报告中的 output_dict 参数返回字典:

classification_report(y_true,y_pred,output_dict=True)

【讨论】:

【参考方案4】:

classification_report 是字符串,所以我建议你使用来自 scikit-learn 的 f1_score

from sklearn.metrics import f1_score
y_true = [0, 1, 2, 2, 2]
y_pred = [0, 0, 2, 2, 1]
target_names = ['class 0', 'class 1', 'class 2']

print(f1_score(y_true, y_pred, average=None)

输出

【讨论】:

谢谢。所以没有办法从分类报告中提取?其他报告呢? 也许你可以使用正则表达式来提取这个值。你能说出其他报告的名字吗? 如果您说的是召回率和精度,是的,sklearn 中有诸如recall_score 和precision_score 之类的函数

以上是关于访问分类报告中的数字 - sklearn的主要内容,如果未能解决你的问题,请参考以下文章

你能解释一下提供的例子中的分类报告(召回率和精度)吗?

数据类型分类

如何显示报告中的数字

使用混合数字和分类数据进行无监督异常检测

owasp 十大漏洞中的 ZAP 警报分类

字符串 数字 列表 元祖 字典 的不同分类and集合的概念