使用yml环境获取scikit-learn版本警告



我想部署一个机器学习模型,并拥有环境yml文件和模型pickle文件。当我将scikit-learn=0.23.2包含到依赖项中时,conda会自动卸载这个scikit-learn版本并安装scikit-learn-0.24.2。因此,当我加载pickle文件时,我得到以下警告:

UserWarning:当使用0.24.2版本时,试图从0.23.2版本中解pickle estimator decisiontreecclassifier。这可能会导致代码中断或无效的结果。使用风险自负。

环境:

name: environment
channels:
- defaults
dependencies:
- blas=1.0
- ca-certificates=2021.5.25
- certifi=2021.5.30
- icc_rt=2019.0.0
- intel-openmp=2021.2.0
- joblib=0.17.0
- mkl=2020.2
- mkl-service=2.3.0
- mkl_fft=1.3.0
- mkl_random=1.1.1
- numpy=1.19.2
- numpy-base=1.19.2
- openssl=1.1.1k
- pandas=1.2.4
- patsy=0.5.1
- pickleshare=0.7.5
- pip=21.1.1
- pyodbc=4.0.30
- python=3.7.4
- python-dateutil
- pytz=2021.1
- scipy=1.6.2
- setuptools=52.0.0
- six=1.15.0
- sqlite=3.35.4
- statsmodels=0.12.0
- threadpoolctl=2.1.0
- vc=14.2
- vs2015_runtime=14.27.29016
- wheel=0.36.2
- wincertstore=0.2
- scikit-learn=0.23.2
- pip:
- imblearn==0.0
prefix: C:Users

conda env create -f environment.yml的结果为:

Installing collected packages: scikit-learn, imbalanced-learn, imblearn
Attempting uninstall: scikit-learn
Found existing installation: scikit-learn 0.23.2
Uninstalling scikit-learn-0.23.2:
Successfully uninstalled scikit-learn-0.23.2
Successfully installed imbalanced-learn-0.8.0 imblearn-0.0 scikit-learn-0.24.2

我还试图通过pip安装scikit-learn=0.23.2,在加载模型时,我没有在本地机器上得到警告。但是不应该在部署环境中通过pip安装scikit-learn。你知道吗?

说明

无论Conda环境的pip:部分是什么,在创建Conda环境之后,YAML将被安装,并使用pip install -U命令运行。如果需要安装指定的包,-U允许Pip升级任何现有的包。在这种特殊情况下,imblearn的版本必须与您选择的scikit-learn版本不兼容。

删除imblearn

从技术上讲,您应该使用imbalanced-learn而不是imblearn,正如包描述中所述。这也意味着你甚至不需要从PyPI安装,因为imbalanced-learn可以通过Conda Forge获得。

如果你需要scikit-learn=0.23,那么你必须使用imbalanced-learn=0.7。这应该在常规依赖项下,而不是在pip:部分。

最新更新