脚本任务的多标签metrics的bug求助
收藏
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
收藏
请登录后评论
可能notebook和脚本任务的sklearn版本不同
应该是sklearn版本不一样,可以试试换一个版本
多谢各位,当时是尝试在脚本任务中用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 的库,脚本任务环境确实很独特,没法调试,没深究了,避免改动原始环境了