每级F1的得分为多级分类

时间:2016-06-03 13:20:43

标签: python machine-learning scikit-learn

我正在使用python和scikit-learn处理多类分类问题。目前,我使用classification_report函数来评估分类器的性能,获取如下报告:

>>> 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分数。也许是这样的:

>>> print(calculate_f1_score(y_true, y_pred, target_class='class 0'))
0.67

scikit-learn上有类似的内容吗?

3 个答案:

答案 0 :(得分:10)

取自f1_score docs

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

f1_score(y_true, y_pred, average=None)

OUPUTS:

array([ 0.8,  0. ,  0. ])

每个班级的分数。

答案 1 :(得分:0)

如果只有混淆矩阵TransactionError,且行与预测对应,列与真相对应,则可以使用以下函数来计算F1分数:

this.errorService.throwAPIError(err);

答案 2 :(得分:0)

您只需要使用pos_label作为参数并分配要打印的类值即可。

f1_score(ytest, ypred_prob, pos_label=0)# default is pos_label=1