首页 PaddleCV 帖子详情
脚本任务的多标签metrics的bug求助
收藏
快速回复
PaddleCV 问答图像分类 198 3
脚本任务的多标签metrics的bug求助
收藏
快速回复
PaddleCV 问答图像分类 198 3

File "/root/paddlejob/workspace/train_data/datasets/PaddleClas/ppcls/utils/metrics.py", line 21, in
from sklearn.metrics import multilabel_confusion_matrix
ImportError: cannot import name 'multilabel_confusion_matrix' from 'sklearn.metrics' (/usr/local/lib/python3.7/dist-packages/sklearn/metrics/__init__.py)

notebook任务跑的好好的,换到脚本任务总是提示这个bug,莫名其妙,求大神解释困惑

0
收藏
回复
全部评论(3)
时间顺序
宇宙物语
#2 回复于2023-02

可能notebook和脚本任务的sklearn版本不同

1
回复
wl_zzz
#3 回复于2023-02

应该是sklearn版本不一样,可以试试换一个版本

1
回复
发发发666
#4 回复于2023-07

多谢各位,当时是尝试在脚本任务中用PaddleClas,貌似到最近的2.4版本的pplcs仍存在这个问题,我最终解决办法是直接注释掉了那部分代码,自己改写实现了,避开报错的问题出现。

下两段代码注释掉后可以正常运行多标签分类的任务

```python

### PaddleClas/ppcls/utils/metrics.py

from sklearn.metrics import hamming_loss
from sklearn.metrics import accuracy_score as accuracy_metric
# from sklearn.metrics import multilabel_confusion_matrix #自行用numpy实现下就行了
from sklearn.metrics import precision_recall_fscore_support
from sklearn.metrics import average_precision_score
from sklearn.preprocessing import binarize

```

```python

### PaddleClas/ppcls/metric/metrics.py

from sklearn.metrics import hamming_loss
# from sklearn.metrics import accuracy_score as accuracy_metric
from sklearn.metrics import multilabel_confusion_matrix
from sklearn.preprocessing import binarize

```

另外需要注释掉PaddleClas/ppcls/metric/metrics.py中 AccuracyScore类中用到的multilabel_confusion_matrix函数部分,将多标签分类的模式改为'sample'。

脚本任务的环境中,既存在scikit-learn=0.24的库,也存在sklearn=0.0 的库,脚本任务环境确实很独特,没法调试,没深究了,避免改动原始环境了

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户