簡體   English   中英

訪問classification_report中的數字 - sklearn

[英]access to numbers in classification_report - sklearn

這是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的號碼?

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

這是模塊的鏈接

您可以在內置classification_report中使用output_dict參數來返回字典:

classification_report(y_true,y_pred,output_dict=True)

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)

產量

您可以將分類報告輸出為dict:

report = classification_report(y_true, y_pred, **output_dict=True** )

然后像在普通的python字典中一樣訪問它的單個值。

例如,宏指標:

macro_precision =  report['macro avg']['precision'] 
macro_recall = report['macro avg']['recall']    
macro_f1 = report['macro avg']['f1-score']

或准確度:

accuracy = report['accuracy']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM