无法通过列表理解访问 classification_report 个指标

can't access classification_report metrics with list comprehension

我正在 运行宁实验和评估 sklearn.metrics.classification_report 结果。如果我传递一个参数 output_dict=True,它 returns 一个包含每个 class 的所有指标的字典(每个 class 都有它的字典)。

问题是我想要所有 classes 的特定指标列表(即 f1 分数)。我想做的是:

report = classification_report(y_tr, y_pr, target_names=label_names, output_dict=True)
all_f1_scores = [metrics['f1-score'] for metrics in report.values()]

这是返回的错误回溯:

TypeErrorTraceback (most recent call last)
<ipython-input-76-1aa68c4b1f46> in <module>
----> 1 [metrics['f1-score'] for metrics in report.values()]

<ipython-input-103-0d9c92bd7736> in <listcomp>(.0)
----> 1 [metrics['f1-score'] for metrics in report.values()]

TypeError: 'float' object is not subscriptable

我不知道是什么导致了这个错误,但我怀疑它与 classification_report 函数有关,因为我能够 运行 手动创建此代码嵌套字典。

classification_report 词典的最后 3 项不是另一个词典,而是总体(浮动)指标。在使用列表理解之前,您需要过滤掉它们。