第2章 环境搭建
说实话,搞信用评分建模,最怕的不是算法复杂,而是环境配了半天跑不起来。我见过太多新手在环境这一步卡了两三天,最后发现是Python版本不对。这一章我就把环境搭建的坑都给你指出来。
我个人习惯用Python 3.8-3.10这个区间,太新或太旧都可能踩坑。嗯,这里要注意,别用3.7以下版本——statsmodels有些新功能不支持了。
2.1 Python基础环境
我在项目里遇到过有人直接装Anaconda全家桶,结果磁盘爆了。其实你只需要一个干净的解释器加一个包管理工具。
推荐方案: 直接装官方Python,然后用pip管理包。千万别装错了64位还是32位——我之前帮同事排查半天,就是他装了32位Python,内存一吃就崩。
安装步骤很简单:
- 去python.org下载3.9.13(我至今觉得这是最稳的版本)
- 安装时记得勾选「Add Python to PATH」
- 打开终端输入
python --version验证
个人习惯: 我会建一个虚拟环境给每个项目。命令就一行:
python -m venv score_env。这样不同项目之间不会打架。
2.2 核心数据科学库
说白了,信用评分建模离不开这几个库。你想想看,数据清洗要pandas,矩阵运算要numpy,可视化要matplotlib——缺一个都不行。
pip install pandas==1.5.3 numpy==1.23.5 scipy==1.9.3 matplotlib==3.6.2
我曾经踩过这个坑: 把pandas装到了2.0版本,结果有些旧代码的DataFrame操作报错。建议锁定1.5.x版本,兼容性和性能都OK。
验证一下能不能正常导入:
python -c "import pandas; import numpy; print('Done')"
2.3 建模与统计库
做WoE和逻辑回归,statsmodels和sklearn是主力。我个人习惯用statsmodels看回归摘要,sklearn做交叉验证。
| 库名 | 版本建议 | 主要用途 |
|---|---|---|
| scikit-learn | 1.0.2 | 特征分箱、交叉验证、评分卡评估 |
| statsmodels | 0.13.5 | 逻辑回归拟合、模型摘要、WOE检验 |
| scorecardpy | 0.1.8 | WoE计算、IV筛选、评分卡生成 |
pip install scikit-learn==1.0.2 statsmodels==0.13.5 scorecardpy==0.1.8
这里要注意: scorecardpy是专门为信用评分设计的,内部封装了WoE分箱函数和我很常用的var_filter方法。建议新手先用它,熟悉了再用底层函数。
2.4 WoE专用工具安装
目前社区常用的WoE计算库,除了scorecardpy外,还有woe这个轻量级库。我建议两个都装上,因为有些场景woe库更灵活。
pip install woe==0.3.1
快速测试一下:
python -c "import woe; import scorecardpy as sc; print('WOE tools ready')"
个人小技巧: 如果你嫌安装慢,可以换清华镜像源。加个 -i 参数:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple woe
2.5 开发环境配置
你是不是想问,该用Jupyter还是IDE?我的答案是:两个都要。Jupyter做探索性分析和可视化,VSCode写正式脚本。
安装Jupyter:
pip install jupyter notebook==6.5.2
启动命令:
jupyter notebook
VSCode的话,装好Python插件、Jupyter插件就够了。别装太多花哨插件,容易卡。
2.6 环境验证——跑通才算数
很多同学装完就不管了,等做项目才发现某个库没装。最后跑个完整验证脚本,确保万无一失。
# 环境验证脚本
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
import statsmodels.api as sm
import scorecardpy as sc
import woe
# 创建测试数据
data = pd.DataFrame({
'age': [25, 35, 45, 55, 65],
'income': [5000, 8000, 12000, 15000, 20000],
'default': [0, 0, 1, 0, 1]
})
# WoE分箱测试
bins = sc.woebin(data, y='default')
print("WoE分箱成功!")
print(bins)
如果这段代码没报错,说明你的环境已经完全就绪了,可以直接进入第三章做真实数据分箱。
2.7 常见避坑指南
- 多版本Python冲突: 用虚拟环境隔离,别用系统默认Python
- 权限问题: 别用sudo pip install,改用 --user 或者虚拟环境
- 版本兼容: 我在项目里遇到过scikit-learn 1.1.0和statsmodels 0.14.0不兼容,降级就好了
- 64位vs32位: 你现在去官网下载,默认就是64位,别改
曾经有个新同事,装完所有库后,跑代码发现numpy报错,原来是他系统Python是32位,但装了64位的numpy。这个问题很隐蔽,大家注意一下。
好了,环境这块就这些。我的建议是:配好之后把上面的验证脚本跑一遍,截图保存。下次换机器直接对照着装,效率翻倍。