- 文档
- 机器学习
- 教程
【免费下载链接】sklearn-doc-zh
:book: [译] scikit-learn(sklearn) 中文文档
本文基于sklearn-doc-zh仓库中 scikit-learn 中文文档的「安装」章节(docs/master/62.md)展开,系统讲解 scikit-learn 0.21.x 时代的运行环境要求(Python、NumPy、SciPy、joblib 等最小版本)、pip与conda两种标准安装方式、scikit-learn[alldeps]依赖集合、PyPy 注意事项,以及 Canopy/Anaconda、WinPython 等第三方发行版的管理原则。读完后你可以完整掌握 scikit-learn 的选型、安装与环境管理,并理解这些安装规范在中文文档站中是如何组织发布的。
版本定位:这是 sklearn 0.21.3 中文文档的安装章
在展开安装细节之前,需要先明确本文事实的适用前提。
sklearn-doc-zh是 scikit-learn 官方文档的中文翻译与发布仓库。从 README.md 可知,其master分支承载的是scikit-learn 0.21.3版本的中文文档;docs/master/book.json 中edit-link的base字段指向docs/0.21.3目录,进一步印证docs/master/下的章节内容对应 0.21.3 这一版本线。
docs/master/62.md 在整个文档中的位置由目录文件确定:无论是站点根目录的 SUMMARY.md 还是版本目录内的 docs/master/SUMMARY.md,「安装 scikit-learn」都是整个目录树的第一个条目,位于「用户指南」「教程」「API 参考」「常见问题」之前。也就是说,这是所有用户接触 scikit-learn 的入口章,后续 用户指南、教程 以及 常见问题 等章节都以本章完成的环境为前提。
因此,下文给出的依赖版本数字(如 NumPy >= 1.11.0)应结合 0.21.x 版本线理解,这是原文档明确标注的时代背景,而非 scikit-learn 各版本通用值。
安装最新版本
运行环境要求(最小版本清单)
原文档列出了安装 scikit-learn 的硬性依赖要求,可整理为如下清单(见 docs/master/62.md#L15-L24):
| 依赖 | 最低版本 | 用途说明 |
|---|---|---|
| Python | >= 3.5 | 运行语言 |
| NumPy | >= 1.11.0 | 数值计算基础 |
| SciPy | >= 0.17.0 | 科学计算基础 |
| joblib | >= 0.11 | 并行化支撑(如n_jobs参数背后依赖的库) |
| Matplotlib | >= 1.5.1 | 仅绘图功能需要,即所有以plot_开头的函数 |
需要特别注意两点:
- 绘图功能是条件依赖。Matplotlib 不是核心运行要求,只有当你调用绘图相关的
plot_系列函数(如决策树章节中的树结构绘制)时才需要。这也解释了为什么 docs/master/11.md 在「决策树」章节额外给出了conda install python-graphviz的命令——graphviz 是树可视化示例的又一个条件依赖,原文档在总章未列出,而在使用到它的章节中补充。 - 部分示例有额外依赖。原文档指出,一些 scikit-learn 示例可能需要 scikit-image(>= 0.12.3)和 pandas(>= 0.18.0)(原文写作 "panda",为笔误,此处按 pandas 理解)。本仓库 docs/examples/ 下收录了大量示例文档,其中图像与表格类示例正是这类额外依赖的使用方。
原文档还有一条明确的版本警告:scikit-learn 0.20 是最后一个支持 Python 2.7 和 Python 3.4 的版本,0.21 起要求 Python 3.5 或更新版本。对运维和 CI 场景而言,这意味着升级到 0.21.x 时必须先确认解释器版本。
方式一:pip 安装
如果你已经有合适版本的 NumPy 和 SciPy,最简单的安装方式是:
pip install -U scikit-learn其中-U参数表示「升级」语义:若本地未安装则安装,若已安装旧版本则升级到最新可用版本。原文档推荐这一条命令作为首选路径(docs/master/62.md#L28-L31)。
方式二:conda 安装
等价的 conda 路径为:
conda install scikit-learn(docs/master/62.md#L33-L38)。conda 的优势在于它能同时解析并安装 NumPy、SciPy 等二进制依赖,避免手动处理 C 扩展构建。
NumPy 与 SciPy 缺失时的处理策略
原文档对「尚未安装 NumPy/SciPy」的场景给出了明确的工程建议:
- 可以用 conda 或 pip 一并安装这两个基础库;
- 使用 pip 时务必确保走的是 binary wheels(二进制轮子),而不是触发源码编译。原文档特别点名了 Raspberry Pi 上的 Linux 这类「操作系统与硬件特定配置」——在 wheel 覆盖不到或架构匹配失败时,pip 可能退化为从源码构建 NumPy/SciPy;
- 从源码构建 NumPy/SciPy「可能是复杂的(特别是在 Windows 上)」,需要仔细配置以确保与线性代数程序的优化实现(BLAS/LAPACK 类库)正确链接。scikit-learn 的性能很大程度取决于底层线性代数库的质量,构建配置不当会直接拖慢所有矩阵运算密集型算法;
- 原文档的结论是:优先使用下文所述的第三方发行版,而不是自己从源码构建整条依赖链。
一步安装全套依赖:scikit-learn[alldeps]
原文档提到了一个针对自动化场景的 pip 功能(docs/master/62.md#L42-L42):
pip install scikit-learn[alldeps]这是 PEP 508 的「extras」语法,作用是把 scikit-learn 及其 pip 可解析的依赖关系一次性装齐。原文档给出了两个关键限定:
- 典型用例:
requirements.txt作为 PaaS 应用或Docker 映像自动构建流程的一部分。这与本仓库自身的使用方式呼应——Dockerfile 展示了文档站如何打包成镜像,而 scikit-learn 用户侧同理,在容器构建中用alldeps可以避免多阶段依赖解析问题; - 限制:
[alldeps]选项不适用于从命令行手动安装的场景(原文如此表述,实践中该 extras 主要面向 pip 的依赖求解流程,例如pip install -r requirements.txt这类声明式安装)。
PyPy 兼容性注意事项
原文档在 PyPy 上给出了一条「注意」提示:
在 PyPy 上安装时,需要注意 PyPy3-v5.10+、NumPy 1.14.0+ 和 SciPy 1.1.0+。
这与同仓库的 docs/master/63.md(常见问题章)形成互证:FAQ 中明确 scikit-learn不支持 PyPy的完整移植,理由是它过度依赖 NumPy,要等 PyPy 的 NumPy 支持与 SciPy 移植完善后才考虑。因此 62.md 给出的版本下限实际上是一条「尽力而为」的兼容边界,而非正式支持承诺——读这两章结合才能准确理解仓库文档对 PyPy 的口径。
源码编译与高级安装路径
原文档在章节末尾为两类用户留了跳转:
- 按操作系统/发行版安装:适用于不想处理 pip/conda 细节、直接用系统包管理器或整体发行版的用户;
- 高级安装说明(Advanced installation):适用于两类场景——要编译 scikit-learn 的开发版本(bleeding edge),或当前架构(architecture)没有现成发行版可用时从源码构建。
原文档开篇的 Note 也提示:如果你要为 scikit-learn 项目做贡献,建议直接安装最新的开发版本而非发布版。构建源码版时,上文提到的「与优化线性代数库链接」的问题就是核心风险点,这也是原文档反复强调优先用第三方发行版的根本原因。
第三方发行版
当你还没有一套「含 NumPy 和 SciPy 的 Python 安装」时,原文档建议通过软件包管理器或整体 Python 发行版来安装——这类发行版通常同时携带 NumPy、SciPy、scikit-learn、Matplotlib 以及一大批科学/数据处理库,省去逐个装依赖的过程。原文档列举了三类可用选项。
Canopy 与 Anaconda(全平台)
原文档指出 Canopy 和 Anaconda 都携带最新版本的 scikit-learn,并提供覆盖 Windows、Mac OSX、Linux 的科学 Python 库集合;其中Anaconda 将 scikit-learn 作为其免费分发的一部分提供。这是跨平台用户的默认推荐路线。
conda 环境管理铁律:不要用 pip 混管 conda 包
这是原文档「警告」级别的内容,也是实践中最常见的环境事故来源:
升级或卸载使用 Anaconda 安装的 scikit-learn,不应该使用 pip 命令。
正确的做法(docs/master/62.md#L66-L78):
# 升级 scikit-learn conda update scikit-learn# 卸载 scikit-learn conda remove scikit-learn原文档解释了原因:pip install -U scikit-learn或pip uninstall scikit-learn可能无法正确删除conda命令安装的文件。pip 只追踪自己安装的包,用 pip 去动 conda 管理的包,会造成两套文件共存或删不干净,进而让后续 conda 升级产生不可预期的行为。原文档的结论很直接:pip 的升级/卸载操作仅适用于通过pip install安装的软件包。
WinPython(Windows)
对 Windows 用户,原文档补充了 WinPython 这一选项:该项目把 scikit-learn 作为额外的插件(plugin)分发,适合希望以「便携绿色 Python 发行版 + 插件」形态管理环境的 Windows 用户。
中文文档中的相关环境坑位(同仓佐证)
安装章只解决了「装上」的问题,scikit-learn 中文文档的 docs/master/63.md(常见问题章)补充了与安装环境强相关的两类高频坑位,与本章构成完整的运维知识面:
1.n_jobs > 1在 OSX/Linux 下崩溃/冻结。FAQ 解释了机理:GridSearchCV、cross_val_score等工具通过 joblib 依赖 Python 内置multiprocessing并行,而multiprocessing为性能默认使用fork系统调用;但 Accelerate/vecLib、某些版本 MKL、GCC OpenMP 运行时等库自行管理内部线程池,fork后子进程中线程池状态损坏。FAQ 给出的解决方案正是安装章提到 joblib 的原因所在:
- 将环境变量
JOBLIB_START_METHOD设为forkserver,让 joblib 不再走fork路径; - 代价是
forkserver模式阻止joblib.Parallel调用在 shell 会话中交互定义的函数; - 若直接使用
multiprocessing的自定义代码,可在主脚本中调用multiprocessing.set_start_method('forkserver')。
2. 可复现性依赖random_state的统一传递。FAQ 指出 scikit-learn 不使用自己的全局随机状态,而是回退到 NumPy 全局种子(如np.random.seed(42)),但全局状态在执行期间易被其他代码篡改,确保可复现的唯一方法是在所有估计器和交叉验证分割器上显式传递random_state参数。这与安装章强调「依赖版本要对」是同一逻辑:环境的确定性来自显式声明,而非默认值。
本文档在 sklearn-doc-zh 仓库中如何组织与运行
对于需要查看、运行本章原文的读者,仓库提供了完整可验证的发布链路:
- 内容入口:章节正文在 docs/master/62.md,目录登记在 SUMMARY.md 与 docs/master/SUMMARY.md,站点侧边栏由 docsify 从这两个文件加载(见 index.html 中
loadSidebar: 'SUMMARY.md'的配置); - 版本编译:src/run_website.sh 是 GitBook 编译脚本,它把根目录 book.json 复制到
docs/master等版本目录、替换各版本edit-link地址(对应 src/script.py 的处理逻辑)后执行gitbook build; - 站点部署:Dockerfile 基于
httpd:2.4把整个站点目录拷贝进 Apache 静态目录,一条docker pull+docker run -p <port>:80即可本地浏览(README.md 给出了docker pull apachecn0/sklearn-doc-zh的完整命令); - 其他获取方式:README.md 还列出了
pip install sklearn-doc-zh与npm install -g sklearn-doc-zh后执行sklearn-doc-zh <port>的用法——注意这里安装的是文档站本身(本仓库),与pip install -U scikit-learn安装机器学习库是两件不同的事,不要混淆。
安装前自检清单
结合原文档,安装 scikit-learn(0.21.x 线)前可核对以下要点:
- 解释器版本:Python >= 3.5;若仍在 2.7/3.4 上,只能停留在 0.20 及更早版本;
- 核心依赖:NumPy >= 1.11.0、SciPy >= 0.17.0、joblib >= 0.11 是否满足;
- 绘图需求:是否用到
plot_系列函数?是则确认 Matplotlib >= 1.5.1,绘制决策树还需 graphviz; - 安装通道:
pip install -U scikit-learn还是conda install scikit-learn;用 conda 装的包,后续升级/卸载一律用conda update/conda remove,禁止 pip 混管; - 自动化场景:Docker/PaaS 构建中优先
scikit-learn[alldeps],手动命令行安装不用它; - 特殊环境:PyPy 用户确认 PyPy3-v5.10+、NumPy 1.14.0+、SciPy 1.1.0+,并接受其非正式支持现状;并行任务(
n_jobs > 1)在 OSX/Linux 上遇到崩溃时设置JOBLIB_START_METHOD=forkserver。
按照 docs/master/62.md 给出的路线完成安装后,即可进入 docs/master/SUMMARY.md 目录树下的用户指南各章,从监督学习开始使用这套工具。
- 文档
- 机器学习
- 教程
【免费下载链接】sklearn-doc-zh
:book: [译] scikit-learn(sklearn) 中文文档
相关推荐
scikit-learn 安装指南:pip / conda / 发行版 / 源码构建的完整实操与依赖版本详解
scikit learn 安装指南:pip / conda / 发行版 / 源码构建的完整实操与依赖版本详解 本篇技术指南基于 scikit learn 官方安
人工智能机器学习数据科学imbalanced-learn 安装与快速入门:依赖要求、pip/conda 安装、源码构建与测试验证全指南
imbalanced learn 安装与快速入门:依赖要求、pip/conda 安装、源码构建与测试验证全指南 imbalanced learn(导入名 imb
机器学习特征工程数据增强Apache APISIX 安装依赖完整指南:etcd 版本要求、OpenResty 运行时与依赖一键安装脚本详解
Apache APISIX 安装依赖完整指南:etcd 版本要求、OpenResty 运行时与依赖一键安装脚本详解 导读 本文围绕 Apache APISIX
API网关后端云原生微服务
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考