sklearn classification_report用于多标签分类的使用方式是否正确?
问题1:多标签场景下预测结果是否必须转为0/1二值标签后传入classification_report?
是必须的,你当前的用法完全正确。
classification_report计算的precision、recall、F1均属于硬分类指标,依赖「样本是否被判定为属于对应类别」的二元判定结果,不能直接基于概率值计算- 你使用
np.around(pred)等价于采用0.5作为分类阈值,和你编译模型时tfa.metrics.F1Score指定的threshold=0.5逻辑完全对齐,所以两者输出的macro F1结果一致,验证了用法的正确性
问题2:直接传入sigmoid输出的预测概率值抛出错误是否符合预期?
完全符合预期。classification_report要求传入的预测结果是离散的分类标签值,不接收连续的浮点概率作为输入,函数无法自动从概率值推导你判定类别的阈值边界,因此直接传概率报错属于正常表现。
如果需要基于概率计算指标,可以选择roc_auc_score等专门接收概率输入的指标函数,但precision、recall、F1这类指标本身的定义就要求基于二值判定结果计算,必须先做阈值二值化处理。
内容的提问来源于stack exchange,提问作者user9317212
相关产品推荐
相关产品推荐

