安装 scikit-learn#
安装 scikit-learn 有多种方法
- 安装最新的官方版本。对于大多数用户来说,这是最佳方法。它将提供稳定版本,并且大多数平台都提供预构建的软件包。 
- 安装您的 操作系统或 Python 发行版 提供的 scikit-learn 版本。对于那些拥有分发 scikit-learn 的操作系统或 Python 发行版的用户来说,这是一个快捷选项。它可能不会提供最新的发行版。 
- 从源代码构建软件包。对于想要最新功能并且不害怕运行全新代码的用户来说,这是最佳选择。对于希望为项目做出贡献的用户来说,这也是必需的。 
安装最新版本#
安装 64 位版本的 Python 3,例如从 官方网站 安装。
现在创建一个 虚拟环境 (venv) 并安装 scikit-learn。请注意,虚拟环境是可选的,但强烈推荐,以避免与其他软件包发生潜在冲突。
python -m venv sklearn-env
sklearn-env\Scripts\activate  # activate
pip install -U scikit-learn
为了检查您的安装,您可以使用
python -m pip show scikit-learn  # show scikit-learn version and location
python -m pip freeze             # show all installed packages in the environment
python -c "import sklearn; sklearn.show_versions()"
使用 miniforge 安装程序 安装 conda(不需要管理员权限)。然后运行
conda create -n sklearn-env -c conda-forge scikit-learn
conda activate sklearn-env
为了检查您的安装,您可以使用
conda list scikit-learn  # show scikit-learn version and location
conda list               # show all installed packages in the environment
python -c "import sklearn; sklearn.show_versions()"
使用 homebrew (brew install python) 或从 官方网站 手动安装 Python 3。
现在创建一个 虚拟环境 (venv) 并安装 scikit-learn。请注意,虚拟环境是可选的,但强烈推荐,以避免与其他软件包发生潜在冲突。
python -m venv sklearn-env
source sklearn-env/bin/activate  # activate
pip install -U scikit-learn
为了检查您的安装,您可以使用
python -m pip show scikit-learn  # show scikit-learn version and location
python -m pip freeze             # show all installed packages in the environment
python -c "import sklearn; sklearn.show_versions()"
使用 miniforge 安装程序 安装 conda(不需要管理员权限)。然后运行
conda create -n sklearn-env -c conda-forge scikit-learn
conda activate sklearn-env
为了检查您的安装,您可以使用
conda list scikit-learn  # show scikit-learn version and location
conda list               # show all installed packages in the environment
python -c "import sklearn; sklearn.show_versions()"
大多数 Linux 发行版通常默认安装 Python 3。要检查您是否已安装它,请尝试
python3 --version
pip3 --version
如果您尚未安装 Python 3,请从发行版的包管理器安装 python3 和 python3-pip。
现在创建一个 虚拟环境 (venv) 并安装 scikit-learn。请注意,虚拟环境是可选的,但强烈推荐,以避免与其他软件包发生潜在冲突。
python3 -m venv sklearn-env
source sklearn-env/bin/activate  # activate
pip3 install -U scikit-learn
为了检查您的安装,您可以使用
python3 -m pip show scikit-learn  # show scikit-learn version and location
python3 -m pip freeze             # show all installed packages in the environment
python3 -c "import sklearn; sklearn.show_versions()"
使用 miniforge 安装程序 安装 conda(不需要管理员权限)。然后运行
conda create -n sklearn-env -c conda-forge scikit-learn
conda activate sklearn-env
为了检查您的安装,您可以使用
conda list scikit-learn  # show scikit-learn version and location
conda list               # show all installed packages in the environment
python -c "import sklearn; sklearn.show_versions()"
使用隔离环境(例如 pip venv 或 conda)可以独立于任何先前安装的 Python 包,使用 pip 或 conda 安装特定版本的 scikit-learn 及其依赖项。尤其是在 Linux 下,不建议与发行版包管理器(apt、dnf、pacman…)管理的包一起安装 pip 包。
请注意,每当您启动新的终端会话时,都应始终记住在运行任何 Python 命令之前激活您选择的环境。
如果您尚未安装 NumPy 或 SciPy,您也可以使用 conda 或 pip 安装它们。使用 pip 时,请确保使用 *二进制轮子*,并且 NumPy 和 SciPy 不是从源代码重新编译的,这在使用特定操作系统和硬件配置(例如 Raspberry Pi 上的 Linux)时可能会发生。
Scikit-learn 的绘图功能(即,以 plot_ 开头的函数和以 Display 结尾的类)需要 Matplotlib。示例需要 Matplotlib,有些示例需要 scikit-image、pandas 或 seaborn。scikit-learn 依赖项的最低版本列在下面,以及其用途。
| 依赖项 | 最低版本 | 用途 | 
|---|---|---|
| numpy | 1.19.5 | 构建,安装 | 
| scipy | 1.6.0 | 构建,安装 | 
| joblib | 1.2.0 | 安装 | 
| threadpoolctl | 3.1.0 | 安装 | 
| cython | 3.0.10 | 构建 | 
| meson-python | 0.16.0 | 构建 | 
| matplotlib | 3.3.4 | 基准测试,文档,示例,测试 | 
| scikit-image | 0.17.2 | 文档,示例,测试 | 
| pandas | 1.1.5 | 基准测试,文档,示例,测试 | 
| seaborn | 0.9.0 | 文档,示例 | 
| memory_profiler | 0.57.0 | 基准测试,文档 | 
| pytest | 7.1.2 | 测试 | 
| pytest-cov | 2.9.0 | 测试 | 
| ruff | 0.5.1 | 测试 | 
| black | 24.3.0 | 测试 | 
| mypy | 1.9 | 测试 | 
| pyamg | 4.0.0 | 测试 | 
| polars | 0.20.30 | 文档,测试 | 
| pyarrow | 12.0.0 | 测试 | 
| sphinx | 7.3.7 | 文档 | 
| sphinx-copybutton | 0.5.2 | 文档 | 
| sphinx-gallery | 0.17.1 | 文档 | 
| numpydoc | 1.2.0 | 文档,测试 | 
| Pillow | 7.1.2 | 文档 | 
| pooch | 1.6.0 | 文档,示例,测试 | 
| sphinx-prompt | 1.4.0 | 文档 | 
| sphinxext-opengraph | 0.9.1 | 文档 | 
| plotly | 5.14.0 | 文档,示例 | 
| sphinxcontrib-sass | 0.3.4 | 文档 | 
| sphinx-remove-toctrees | 1.0.0.post1 | 文档 | 
| sphinx-design | 0.6.0 | 文档 | 
| pydata-sphinx-theme | 0.15.3 | 文档 | 
| towncrier | 24.8.0 | 文档 | 
| conda-lock | 2.5.6 | 维护 | 
警告
Scikit-learn 0.20 是最后一个支持 Python 2.7 和 Python 3.4 的版本。Scikit-learn 0.21 支持 Python 3.5-3.7。Scikit-learn 0.22 支持 Python 3.5-3.8。Scikit-learn 0.23-0.24 需要 Python 3.6 或更高版本。Scikit-learn 1.0 支持 Python 3.7-3.10。Scikit-learn 1.1、1.2 和 1.3 支持 Python 3.8-3.12 Scikit-learn 1.4 需要 Python 3.9 或更高版本。
scikit-learn 的第三方发行版#
一些第三方发行版提供与它们的包管理系统集成的 scikit-learn 版本。
这可以为用户简化安装和升级,因为集成包括自动安装 scikit-learn 所需的依赖项 (numpy、scipy) 的功能。
以下是提供其自身 scikit-learn 版本的操作系统和 python 发行版的非完整列表。
Alpine Linux#
Alpine Linux 的软件包通过 官方存储库 提供,作为 Python 的 py3-scikit-learn。可以通过键入以下命令进行安装
sudo apk add py3-scikit-learn
Arch Linux#
Arch Linux 的软件包通过 官方存储库 提供,作为 Python 的 python-scikit-learn。可以通过键入以下命令进行安装
sudo pacman -S python-scikit-learn
Debian/Ubuntu#
Debian/Ubuntu 软件包分为三个不同的软件包:python3-sklearn(python 模块)、python3-sklearn-lib(低级实现和绑定)、python-sklearn-doc(文档)。请注意,scikit-learn 需要 Python 3,因此需要使用 python3- 后缀的包名。可以使用 apt-get 安装软件包
sudo apt-get install python3-sklearn python3-sklearn-lib python-sklearn-doc
Fedora#
Fedora 软件包名为 python3-scikit-learn(python 3 版本),这是 Fedora 中唯一可用的版本。可以使用 dnf 进行安装
sudo dnf install python3-scikit-learn
NetBSD#
scikit-learn 可通过 pkgsrc-wip 获取:https://pkgsrc.se/math/py-scikit-learn
Mac OSX 的 MacPorts#
MacPorts 软件包名为 py<XY>-scikits-learn,其中 XY 表示 Python 版本。可以使用以下命令安装:
sudo port install py39-scikit-learn
所有支持平台的 Anaconda 和 Enthought Deployment Manager#
Anaconda 和 Enthought Deployment Manager 都包含 scikit-learn,以及适用于 Windows、Mac OSX 和 Linux 的大量科学 Python 库。
Anaconda 在其免费发行版中提供 scikit-learn。
Scikit-learn 的 Intel 扩展#
Intel 提供了一个优化的 x86_64 软件包,可在 PyPI(通过 pip)以及 main、conda-forge 和 intel conda 通道中获得。
conda install scikit-learn-intelex
此软件包包含许多估计器的 Intel 优化版本。如果不存在替代实现,则使用 scikit-learn 实现作为后备。这些优化的求解器来自 oneDAL C++ 库,针对 x86_64 架构进行了优化,并针对多核 Intel CPU 进行了优化。
请注意,这些求解器默认情况下未启用,有关使用方法场景的更多详细信息,请参阅 scikit-learn-intelex 文档。直接导出示例
from sklearnex.neighbors import NearestNeighbors
通过自动化持续集成(如 intel/scikit-learn-intelex 上所报告的那样)运行完整的 scikit-learn 测试套件来检查与标准 scikit-learn 求解器的兼容性。如果您在 scikit-learn-intelex 中发现任何问题,请在其 问题跟踪器 上报告问题。
Windows 的 WinPython#
WinPython 项目将 scikit-learn 分发为附加插件。
故障排除#
如果您在安装 scikit-learn 时遇到意外故障,可以向 问题跟踪器 提交问题。在此之前,请务必检查以下常见问题。
Windows 上由文件路径长度限制引起的错误#
如果 Python 安装在嵌套位置(例如用户主目录下的 AppData 文件夹结构),则 pip 在达到 Windows 的默认路径大小限制时可能会安装软件包失败。
C:\Users\username>C:\Users\username\AppData\Local\Microsoft\WindowsApps\python.exe -m pip install scikit-learn
Collecting scikit-learn
...
Installing collected packages: scikit-learn
ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: 'C:\\Users\\username\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python37\\site-packages\\sklearn\\datasets\\tests\\data\\openml\\292\\api-v1-json-data-list-data_name-australian-limit-2-data_version-1-status-deactivated.json.gz'
在这种情况下,可以使用 regedit 工具解除 Windows 注册表中的该限制。
- 在 Windows 开始菜单中键入“regedit”以启动 - regedit。
- 转到 - Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem密钥。
- 编辑该密钥的 - LongPathsEnabled属性的值,并将其设置为 1。
- 重新安装 scikit-learn(忽略之前的损坏安装) - pip install --exists-action=i scikit-learn
