使用 yml 环境获取 scikit-learn 版本警告
getting scikit-learn version warning using yml environment
我想部署一个机器学习模型并拥有环境 yml 文件和模型 pickle 文件。当我将 scikit-learn=0.23.2
添加到依赖项时,conda 会自动卸载此 scikit-learn 版本并安装 scikit-learn-0.24.2
。因此,我在加载 pickle 文件时收到以下警告。
UserWarning:在使用 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安装。你有什么想法吗?
说明
Conda 环境 YAML 的 pip:
部分中的任何内容都会安装 在 Conda 环境创建之后,并且 运行 带有 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:
部分。
我想部署一个机器学习模型并拥有环境 yml 文件和模型 pickle 文件。当我将 scikit-learn=0.23.2
添加到依赖项时,conda 会自动卸载此 scikit-learn 版本并安装 scikit-learn-0.24.2
。因此,我在加载 pickle 文件时收到以下警告。
UserWarning:在使用 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安装。你有什么想法吗?
说明
Conda 环境 YAML 的 pip:
部分中的任何内容都会安装 在 Conda 环境创建之后,并且 运行 带有 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:
部分。