第2章 环境搭建

说实话,搞信用评分建模,最怕的不是算法复杂,而是环境配了半天跑不起来。我见过太多新手在环境这一步卡了两三天,最后发现是Python版本不对。这一章我就把环境搭建的坑都给你指出来。

我个人习惯用Python 3.8-3.10这个区间,太新或太旧都可能踩坑。嗯,这里要注意,别用3.7以下版本——statsmodels有些新功能不支持了。

信用评分WoE建模 —— 环境搭建架构 Python 3.8 ~ 3.10 pandas / numpy scipy / matplotlib 建模与统计库 sklearn / statsmodels WOE专用库 / scorecardpy Jupyter Notebook VSCode / PyCharm 虚拟环境管理(venv)

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。这个问题很隐蔽,大家注意一下。

好了,环境这块就这些。我的建议是:配好之后把上面的验证脚本跑一遍,截图保存。下次换机器直接对照着装,效率翻倍。