A.1 编程与统计计算环境¶
本附录目标
- 装好 Python + 科学计算栈
- 配 VS Code / Jupyter 工作流
- 选好 GPU / 云 (深度学习)
A.1.1 推荐发行版¶
| 选项 | 适合 | 备注 |
|---|---|---|
| Miniconda | 大多数人 | 轻量, 灵活管虚拟环境 |
| Anaconda | 完全新手 | 一键带 GUI, 体积大 |
| uv / pixi | 高级用户 | 极快, Rust 写的现代包管理 |
| Docker | 生产 / 团队 | 完全复现环境 |
| Colab / Kaggle | 零配置入门 | 免费 GPU |
下载: https://docs.conda.io/en/latest/miniconda.html
A.1.2 创建虚拟环境¶
conda create -n stat python=3.11 -y
conda activate stat
# 基础科学栈
pip install numpy pandas scipy matplotlib seaborn jupyterlab
# 统计与机器学习
pip install statsmodels scikit-learn xgboost lightgbm
# 贝叶斯
pip install pymc arviz
# 生存分析
pip install lifelines
# 因果推断
pip install dowhy econml
# 深度学习 (CPU)
pip install torch torchvision torchaudio
# 深度学习 (GPU/CUDA 12.1)
# pip install torch --index-url https://download.pytorch.org/whl/cu121
# Transformer / LLM
pip install transformers datasets accelerate sentence-transformers
提示: 国内可加
-i https://pypi.tuna.tsinghua.edu.cn/simple加速。
A.1.3 工作目录建议¶
project/
├── data/ # 原始数据 (大文件不进 git)
├── notebooks/ # 探索性 .ipynb
├── src/ # 复用代码
│ ├── data.py
│ ├── model.py
│ └── utils.py
├── tests/
├── reports/ # 图、 报告
├── requirements.txt # 或 pyproject.toml
└── README.md
A.1.4 VS Code 配置¶
推荐插件:
- Python (Microsoft) — 核心
- Jupyter — Notebook 集成
- Pylance — 类型检查
- Ruff — lint+format (替代 flake8/black)
- Even Better TOML
- GitLens
- GitHub Copilot — AI 补全
settings.json:
{
"python.defaultInterpreterPath": "~/miniconda3/envs/stat/bin/python",
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnSave": true
}
}
A.1.5 Jupyter 高效技巧¶
| 快捷键 | 作用 |
|---|---|
Shift+Enter |
运行 + 下一格 |
Ctrl+Enter |
运行原地 |
A / B |
上/下插格 (命令模式) |
D D |
删格 |
M / Y |
Markdown / Code |
Esc |
命令模式 |
?函数 |
查 docstring |
%timeit ... |
计时 |
%matplotlib inline |
内嵌图 |
%%writefile foo.py |
写文件 |
A.1.6 pandas 常用速查¶
import pandas as pd
df = pd.read_csv('data.csv')
df.head(); df.info(); df.describe()
df.isna().sum()
df.groupby('cat').agg({'x': ['mean', 'std'], 'y': 'sum'})
df.merge(other, on='key', how='left')
df.pivot_table(index='a', columns='b', values='v', aggfunc='mean')
df.assign(z=lambda d: d.x / d.y)
df.query("age > 18 and city in ['上海','北京']")
A.1.7 matplotlib / seaborn 速查¶
import matplotlib.pyplot as plt, seaborn as sns
sns.set_theme(style='whitegrid')
fig, ax = plt.subplots(figsize=(7, 4))
sns.scatterplot(data=df, x='x', y='y', hue='group', ax=ax)
ax.set_title('Title'); ax.set_xlabel('x'); ax.set_ylabel('y')
fig.tight_layout(); fig.savefig('out.png', dpi=150)
中文支持:
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'PingFang SC']
plt.rcParams['axes.unicode_minus'] = False
A.1.8 GPU 与云推荐¶
| 平台 | 用途 |
|---|---|
| Google Colab | 免费 T4, Pro 有 A100/L4 |
| Kaggle | 30 小时/周 P100/T4 免费 |
| AutoDL / 揽睿 / 矩池云 | 国内便宜 GPU 租用 |
| RunPod / Vast / Lambda | 国外按需 |
| AWS / GCP / Azure | 企业级 |
| Modal / Replicate | Serverless GPU |
本地: NVIDIA 30/40 系列 16GB+ 显存即可玩中小模型 + LoRA。
A.1.9 Git / GitHub¶
git init
git add . && git commit -m "init"
git branch -M main
git remote add origin git@github.com:user/repo.git
git push -u origin main
.gitignore:
A.1.10 常见坑¶
| 问题 | 解法 |
|---|---|
| matplotlib 中文乱码 | 设字体 (上面) |
| numpy 2.x 报 trapz | 改用 np.trapezoid |
| pip 装慢 | 用清华/阿里源 |
| jupyter 内核找不到 | python -m ipykernel install --user --name stat |
| Windows 路径斜杠 | 用 pathlib.Path |
| LLM CUDA 显存不够 | bitsandbytes 4-bit 量化 / 梯度检查点 |
| 中文文件编码报错 | 加 encoding='utf-8'; Windows 下 chcp 65001 |
A.1.11 推荐学习资源¶
- 官方文档 : numpy / pandas / scikit-learn / pytorch
- 网课 : Andrew Ng (Coursera), Karpathy (YouTube), 李沐 (B 站)
- 博客 : distill.pub, Lil'Log, Sebastian Raschka
- 论文 : arXiv (cs.LG, stat.ML)
- 社区 : Stack Overflow, Cross Validated, GitHub
A.1.12 下一步¶
- 下节 §A.2 数学速查, 复习高数 / 线代 / 概率核心。