第1章:模型开发环境搭建
说实话,很多做风控的同学,模型调得再好,一到部署就翻车。为啥?环境没搭对。
我见过太多案例了——本地跑得飞起,上了服务器就报错。说白了,就是环境不一致。所以今天咱们先把地基打牢。
1.1 Python环境配置
Python版本怎么选?我个人习惯用3.8或3.9。为什么?
- 3.8以下,很多新库不支持了
- 3.10以上,有些风控老库还没适配
- 3.8/3.9,生态最稳
我在项目中遇到过,团队有人用3.11,结果某个xgboost版本死活装不上。嗯,后来统一降级到3.9,问题秒解。
避坑指南: 我曾经因为Python版本不一致,导致线上模型推理结果和本地差了几个百分点。排查了两天才发现是浮点运算精度差异。所以,版本统一是底线。
1.2 Anaconda使用
Anaconda这东西,说白了就是个环境管家。你想想看,一个项目要pandas 1.3,另一个要1.5,没有conda你怎么办?
我常用的几个命令:
# 创建环境
conda create -n risk_model python=3.9
# 激活环境
conda activate risk_model
# 安装包
conda install pandas numpy scikit-learn
# 导出环境(这个在部署时特别有用)
conda env export > environment.yml
# 从文件重建环境
conda env create -f environment.yml
小技巧: 我习惯给每个风控项目单独建一个环境。名字就叫 project_xxx_risk,这样切换项目时不会乱。
1.3 Jupyter Notebook设置
Jupyter Notebook,做风控模型开发的标配。但默认配置其实挺难用的。我一般会做这几件事:
- 改默认端口——避免和同事冲突
- 设置密码——安全第一
- 配置远程访问——方便在服务器上跑
生成配置文件的命令:
jupyter notebook --generate-config
然后修改 ~/.jupyter/jupyter_notebook_config.py:
c.NotebookApp.ip = '0.0.0.0' # 允许远程访问
c.NotebookApp.port = 8888 # 端口
c.NotebookApp.password = '' # 密码(用jupyter notebook password设置)
c.NotebookApp.open_browser = False # 不自动打开浏览器
重点: 在风控场景下,数据安全是红线。Jupyter的密码一定要设,而且别用弱密码。我曾经见过有人把包含客户数据的Notebook直接暴露在公网上...后果很严重。
1.4 常用库安装
风控模型开发,这几个库是标配:
| 库名 | 用途 | 安装命令 |
|---|---|---|
| pandas | 数据处理 | conda install pandas |
| numpy | 数值计算 | conda install numpy |
| scikit-learn | 传统模型 | conda install scikit-learn |
| xgboost | 梯度提升树 | conda install -c conda-forge xgboost |
| flask | 模型部署 | conda install flask |
| lightgbm | 另一个GBDT | conda install -c conda-forge lightgbm |
| joblib | 模型序列化 | conda install joblib |
安装时有个顺序问题。我建议:先装pandas和numpy,再装sklearn,最后装xgboost。为什么?因为xgboost依赖底层C++库,如果先装它,有时候会和numpy版本冲突。
经验之谈: 用conda安装比pip更稳。特别是在Windows上,pip装xgboost经常报错。conda会帮你处理依赖关系。
1.5 验证环境
装完之后,跑个简单的测试脚本:
import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestClassifier
import xgboost as xgb
import flask
print("pandas version:", pd.__version__)
print("numpy version:", np.__version__)
print("sklearn version:", sklearn.__version__)
print("xgboost version:", xgb.__version__)
print("flask version:", flask.__version__)
# 简单测试
X = np.random.rand(100, 5)
y = np.random.randint(0, 2, 100)
model = RandomForestClassifier()
model.fit(X, y)
print("模型训练成功!")
如果没报错,恭喜你,环境搭好了。
1.6 本章知识体系
下面这张图,帮你理清整个环境搭建的逻辑:
这张图展示了从Python基础环境到最终模型部署的完整链路。每一步都环环相扣,缺一不可。
核心要点:
- Python版本统一用3.8或3.9
- 每个项目独立conda环境
- Jupyter配置好远程访问和密码
- 库的安装顺序:pandas → sklearn → xgboost
- 装完一定要跑测试脚本验证
环境搭好了,后面的事情就顺了。下一章咱们开始讲数据预处理,那才是真正考验功底的地方。
公众号:蓝海资料掘金营,微信deep3321