第 1 章 · 03 环境搭建


文档摘要

第 1 章 · 03 环境搭建 本节摘要:本节解决一个工程现实问题——怎样把 ML4T 的代码跑起来。原项目 给出了两条路径:一是用 Docker 镜像 ,镜像里预装了 、 、 三个 conda 环境;二是本地用 (或深度学习专用的 )创建环境。本节讲清两条路径的关键步骤、TA-Lib 这种「带 C 库依赖」的包怎么装、为什么 Zipline 要用作者打补丁的版本、以及 Python 3.7(深度学习章 3.7、Zipline 章 3.5)的版本约束。读完本节,你能选一条路径把环境搭好,跑通第一个 notebook。 内容来源:原项目 、 下的环境文件、根 中关于软件版本的说明,汉化并套用体系化模板。

第 1 章 · 03 环境搭建

本节摘要:本节解决一个工程现实问题——怎样把 ML4T 的代码跑起来。原项目 installation/README.md 给出了两条路径:一是用 Docker 镜像 appliedai/packt:latest,镜像里预装了 baseml4tml4t-zipline 三个 conda 环境;二是本地用 conda env create -f environments/<os>/ml4t.yml(或深度学习专用的 ml4t_dl.yml)创建环境。本节讲清两条路径的关键步骤、TA-Lib 这种「带 C 库依赖」的包怎么装、为什么 Zipline 要用作者打补丁的版本、以及 Python 3.7(深度学习章 3.7、Zipline 章 3.5)的版本约束。读完本节,你能选一条路径把环境搭好,跑通第一个 notebook。

内容来源:原项目 installation/README.mdinstallation/environments/ 下的环境文件、根 README.md 中关于软件版本的说明,汉化并套用体系化模板。

⚠️ 学习提示:本章依赖较重(TA-Lib 需 C 库、Zipline 已停更、TensorFlow 版本敏感),务必先在小数据集上跑通流程,不要一上来就处理 12GB 的 ITCH 文件。

学习目标

阅读完本节,你应当能够:

  1. Dockerconda 二选一搭起 ML4T 运行环境。
  2. 说清三个 conda 环境 baseml4tml4t-zipline 各自的用途。
  3. 安装 TA-Lib 的 C 库与 Python 封装。
  4. 理解为什么 Zipline 要用打补丁版本
  5. 区分 ml4t.ymlml4t_dl.yml 两个环境文件的适用范围。

一、整体方案:Docker 与 conda 二选一

原项目主要基于 Python 3.7(Zipline 章节因历史原因用 3.5),依赖众多,在 Windows 上尤其麻烦。作者提供两条路:

方案 优点 缺点
Docker 镜像 一行命令拉镜像即可,C 库依赖(TA-Lib)已就绪 占空间,内存默认偏低需调到 4GB+
本地 conda 灵活,可与 IDE 深度集成 Windows 装 TA-Lib/Zipline 易踩坑

💡 核心心法:如果你的目标只是「读懂并跑通 notebook」,优先 Docker;如果你要在自定义数据上长期开发,优先本地 conda。

二、Docker 方案的关键步骤

installation/README.md 的指引,核心命令如下。

docker run -it -v $(pwd):/home/packt/ml4t -p 8888:8888 \ -e QUANDL_API_KEY=<你的key> --name ml4t appliedai/packt:latest bash

这条命令一次性完成五件事:

片段 作用
-v $(pwd):/home/packt/ml4t 把当前目录(项目根)挂载进容器
-p 8888:8888 转发 Jupyter 端口
-e QUANDL_API_KEY=... 注入 Quandl API 密钥(免费注册)
--name ml4t 容器命名为 ml4t,便于后续 docker start ml4t
appliedai/packt:latest 镜像名,基于 Ubuntu 20.04 + Anaconda

进入容器后,conda env list 可看到三个环境:

  • base:基础环境。
  • ml4t:默认环境,覆盖第 1~16 章。
  • ml4t-zipline:专门跑 Zipline 回测(第 4~8 章涉及)。

⚠️ 警告:README 提醒「容器的默认内存偏小,务必在 Docker Desktop 的 Resources 里把内存调到至少 4GB」,否则处理 ITCH(12GB 解压后)会 OOM。

三、conda 方案与环境文件

不想用 Docker,就在本地装 miniconda,然后用作者提供的 environments/<os>/ml4t.yml 创建。installation/README.md 给出按操作系统分目录的环境规格:

文件 覆盖章节 路径示例
ml4t.yml 第 2~16 章(数据、因子、回测、模型) environments/linux/ml4t.yml
ml4t_dl.yml 第 17~22 章(深度学习/RL) environments/linux/ml4t_dl.yml

创建命令:

conda env create -f environments/linux/ml4t.yml # Linux conda env create -f environments/macos/ml4t.yml # macOS conda env create -f environments/windows/ml4t.yml # Windows

激活与退出:

conda activate ml4t conda deactivate

💡 核心心法:把深度学习单独拆出 ml4t_dl.yml,是因为 TensorFlow/GPU 依赖与 Zipline/pandas 老版本会冲突。让「传统 ML」与「深度学习」分环境共存,是工程上的妥协。

四、Zipline:为什么用打补丁版本

原书用 Zipline 做回测(第 4、5、8 章)。但 Quantopian 官方 Zipline 1.3 有两个让本书用起来很难的缺陷,作者因此维护了一个打补丁的 fork(github.com/stefan-jansen/zipline):

  1. 依赖 IEX 交易所的基准数据:IEX 后来改了接口,导致 run_algorithm() 跑不通。补丁版本改用本地基准。
  2. 无法导入 OHLCV 之外的因子:本书要把 ML 模型预测作为额外输入。补丁版本放开了 Pipeline 的限制。

Docker 镜像里的 ml4t-zipline 环境已装好这个补丁版。本地装的话,按 installation/README.md 的「Separate environment for using Zipline」一节:

# 用 pyenv 等工具建一个 Python 3.5 环境 pip install -U pip Cython git clone https://github.com/stefan-jansen/zipline cd zipline pip install -e . pip install jupyter pyfolio

第一次使用要先 ingest 数据:

conda activate ml4t-zipline zipline ingest # 会处理约 3000 只股票的价格序列

五、TA-Lib:带 C 库依赖的硬骨头

TA-Lib 是第 4 章的主力库,但它由 C 库 + Python 封装组成,直接 pip install TA-Lib 经常编译失败。installation/README.md 在末尾特别提醒「请按 TA-Lib 官方安装指引装好 C 库」。

操作系统 C 库安装
Linux conda install -c conda-forge ta-lib 一般可直接带二进制
macOS brew install ta-lib 后再 pip install TA-Lib
Windows 下载预编译的 TA_Lib-0.4.x-cp3x-win_amd64.whl,用 pip install <whl> 安装

⚠️ 警告:Windows 上从源码编译 TA-Lib 几乎必失败,优先找对应 Python 版本的预编译 whl。本教程第 4 章所有技术指标都依赖它,装不上后续会卡住。

六、Jupyter 与 notebook 工作流

README 推荐两个增强:

  • TOC2 扩展:notebook 目录侧栏,长 notebook 必备。在 Nbextensions 配置页勾选 Table of Contents (2),并勾选「Leave h1 items out of ToC」。
  • nbconvert 转 .py:部分长 notebook 更适合作为脚本运行。
jupyter nbconvert --to script your_notebook.ipynb

启动 Jupyter(容器内已有别名):

jupyter notebook --ip 0.0.0.0 --no-browser --allow-root # 或镜像内置别名 nb # jupyter notebook lab # jupyter lab

本节要点回顾

  1. 二选一:Docker 镜像 appliedai/packt:latest 适合新手,本地 conda 适合长期开发。
  2. 三环境:base / ml4t(默认,覆盖 2~16 章)/ ml4t-zipline(回测专用)。
  3. 两份 yml:ml4t.yml(传统 ML)与 ml4t_dl.yml(深度学习)分开,避免依赖冲突。
  4. Zipline 用补丁版:作者 fork 解决了 IEX 基准依赖与因子导入限制,首次使用要 zipline ingest
  5. TA-Lib 装 C 库:Windows 优先用预编译 whl,不要硬编译。
  6. Jupyter 增强:TOC2 + nbconvert,长 notebook 必备。
  7. 内存与版本:Docker 内存调到 4GB+,Python 版本 3.7(Zipline 章 3.5)。

下一章,我们正式进入「数据篇」,从 NASDAQ TotalView ITCH 订单簿重建 开始,学怎么从最原始的二进制 tick 消息重建出真实的订单簿。


发布者: 作者: 灏天文库 转发
评论区 (0)
U