使用 yml 环境获取 scikit-learn 版本警告
Posted
技术标签:
【中文标题】使用 yml 环境获取 scikit-learn 版本警告【英文标题】:getting scikit-learn version warning using yml environment 【发布时间】:2021-10-16 14:22:52 【问题描述】:我想部署一个机器学习模型并拥有环境 yml 文件和模型 pickle 文件。当我在依赖项中包含 scikit-learn=0.23.2
时,conda 会自动卸载此 scikit-learn 版本并安装 scikit-learn-0.24.2
。因此,我在加载 pickle 文件时收到以下警告。
用户警告:在使用 0.24.2 版本时,尝试从 0.23.2 版本中取消提取估算器 DecisionTreeClassifier。这可能会导致破坏代码或无效结果。采用 风险自负。
这里是环境:
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,但在加载模型时我没有在本地机器中收到警告。但是 scikit-learn 不应该在部署环境中通过 pip 安装。你有什么想法吗?
【问题讨论】:
【参考方案1】:说明
在 Conda 环境的 pip:
部分中的任何内容都将在 Conda 环境创建后安装 YAML,并使用 pip install -U
命令运行。如果需要安装指定的包,-U
允许 Pip 升级任何现有的包。在这种特殊情况下,imblearn
的版本必须与您选择的scikit-learn
版本不兼容。
删除imblearn
从技术上讲,您应该使用imbalanced-learn
而不是imblearn
,就像stated in the package description。这也意味着您甚至不需要从 PyPI 安装,因为 imbalanced-learn
可通过 Conda Forge 获得。
如果您需要scikit-learn=0.23
,那么您必须使用imbalanced-learn=0.7
。这应该在常规依赖项下,而不是在pip:
部分。
【讨论】:
谢谢。您的解释非常翔实。但是,当我尝试在常规依赖项下安装不平衡学习 = 0.7 或不平衡学习 = 0.7.0 时,我得到 ResolvePackageNotFound:不平衡学习 = 0.7 。你知道为什么会这样吗? 它在 conda-forge 频道上。尝试使用conda-forge::imbalanced-learn=0.7
或将conda-forge
添加到频道部分。以上是关于使用 yml 环境获取 scikit-learn 版本警告的主要内容,如果未能解决你的问题,请参考以下文章
在 symfony2 parameters.yml 中获取环境变量