我是靠谱客的博主 不安发带,最近开发中收集的这篇文章主要介绍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。 -
策略:
- 检查y_true是不是Binary Label;如果不是,用LB或者MLB做好转换;
- 检查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 ...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复