sklearn指标category_report版本输出

时间:2019-04-22 00:12:55

标签: python machine-learning

因此,我正在使用Jupiter Notebook使用Python进行一些机器学习,并且sklearn grade_report的输出格式存在问题。有两个版本。一个是0.18.2,另一个是0.20.3。 20.3版本的代码如下:

from sklearn.metrics import classification_report
final=(classification_report(y_test, predictions))
print(final) 


            precision  recall   fl-score  support   
Female        0.47.      0.21.      0.34.   26 
Male.         0.71       0.85.      0.78.   55 

micro avg     0.67.      0.67.      0.67.   81 
macro avg.    0.59.      0.56       0.56.   81 
weighted avg  0.63.      0.67.      0.64.   81          

但是,我希望以下输出是这样的:

              precision  recall   fl-score  support   
Female        0.47.      0.21.      0.34.   26 
Male.         0.71       0.85.      0.78.   55 

avg/total.    0.63.      0.67.      0.64.   81  

上面的输出是sklearn分类报告的0.18.2版本 由于某种原因,该版本未与我的版本一起运行。输出的语法在0.18.2和0.20.3中相同。有没有办法 在Jupiter笔记本中来回切换版本?任何意见,将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用classification_report的选项来获取字典而不是字符串作为返回值,然后可以根据需要进行操作。这是相关参数:

  

output_dict:bool(默认= False)   如果为True,则将输出作为dict返回

(有关v0.20文档,请参见here

然后通过这种方法将输出更改为您的要求:

# get report as dict instead of a string
report = classification_report(y_test, predictions, output_dict=True)
# delete entries for keys "micro avg" and "macro avg" from report dict
del report["micro avg"]
del report["macro avg"]
# rename dict key "weighted avg" to "avg total"
report["avg/total"] = report.pop("weighted avg")
print(pd.DataFrame(report).transpose())

输出应如下所示(已通过v0.21.3 *测试):

            precision  recall   fl-score  support   
Female        0.47      0.21      0.34      26 
Male          0.71      0.85      0.78      55 
avg/total     0.63      0.67      0.64      81 

*在v0.21.3中,您需要使用del report["accuracy"]而不是del report["micro avg"],因为指标名称已更改。