我正在使用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上有类似的内容吗?
答案 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