我是靠谱客的博主 不安发带,最近开发中收集的这篇文章主要介绍scikit-learn issues - classification metrics can‘t handle a mix of continuous-multioutput ...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

classification metrics can’t handle a mix of continuous-multioutput and multi-label-indicator targets

  • 示例场景:

    cm = confusion_matrix(y_true, y_pred)
    f1_score(y_true, y_pred, average="macro")
    
  • 问题描述:
    这个问题常见于评价多分类任务,由于sklearn的classification metrics只接受binary的targets,所以你需要确保y_ture和y_pred中的元素都是0或1的array。

  • 策略:

  1. 检查y_true是不是Binary Label;如果不是,用LB或者MLB做好转换;
  2. 检查y_pred是不是二值的;一般来说y_pred更容易造成这个问题,因为很多人会在昨晚predict之后,直接拿网络的输出(Softmax/Sigmoid 输出)做为Metrics的输入。如果属于这种情况,对于Multi-class Classification(即y_pred是Softmax的输出),可以直接用np.argmax()做转换;而对于Multi-label Classification(即y_pred是sigmoid的输出),一般使用np.around,四舍五入将y_pred调整为二值化形式( 即相当于设置了阈值0.5)。
    # Multi-class
    y_pred = np.argmax(y_pred)
    # Multi-label
    y_pred = np.around(y_pred) # np.around
    

最后

以上就是不安发带为你收集整理的scikit-learn issues - classification metrics can‘t handle a mix of continuous-multioutput ...的全部内容,希望文章能够帮你解决scikit-learn issues - classification metrics can‘t handle a mix of continuous-multioutput ...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部