1. 信用评分卡业务理解与项目初始化
业务目标与范围
信用评分卡的核心业务目标:用可解释的量化模型预测借款人未来一段时间内的违约概率,并将概率映射为分数,用于审批、额度、定价等决策。本案例只做项目初始化,不训练模型。
- 业务目标:输出一个可复用的评分卡项目骨架,后续案例在此结构上逐步加入数据、特征、建模、评分映射与监控。
- 监管要求:模型需可解释、可追溯、可审计;数据需合规采集与留存;评分结果不得使用受保护特征(如性别、种族等)作为直接决策依据。
- 项目范围:本案例仅创建目录结构、配置文件与版本控制初始化,不涉及数据与算法。
目录结构设计
按数据、特征、模型、评分、监控、测试分层,保证后续每个案例都有明确落点。
初始化脚本
以下脚本一次性创建目录、写入配置与忽略规则,并初始化 Git 仓库。运行环境:Python 3.8+,已安装 git。
import os
import subprocess
from pathlib import Path
ROOT = Path("credit_scorecard")
DIRS = ["data/raw", "data/processed", "features", "models",
"scorecard", "monitoring", "tests", "configs"]
CONFIG = """project:
name: credit_scorecard
version: 0.1.0
target:
label: default_flag
horizon_months: 12
regulatory:
explainable: true
protected_features: [gender, race, age]
"""
GITIGNORE = """data/raw/
data/processed/
*.pkl
*.joblib
__pycache__/
.env
"""
README = """# Credit Scorecard
信用评分卡项目骨架。
- data/: 数据存放
- features/: 特征工程
- models/: 模型训练
- scorecard/: 评分映射
- monitoring/: 监控
"""
def init_project():
for d in DIRS:
(ROOT / d).mkdir(parents=True, exist_ok=True)
(ROOT / "configs" / "config.yaml").write_text(CONFIG, encoding="utf-8")
(ROOT / ".gitignore").write_text(GITIGNORE, encoding="utf-8")
(ROOT / "README.md").write_text(README, encoding="utf-8")
for d in DIRS:
(ROOT / d / ".gitkeep").touch()
subprocess.run(["git", "init"], cwd=ROOT, check=True)
print("项目初始化完成:", ROOT.resolve())
if __name__ == "__main__":
init_project()
运行与验证
python init_project.py
cd credit_scorecard
git status
通过条件:credit_scorecard/ 下出现全部 8 个子目录;configs/config.yaml、.gitignore、README.md 存在;git status 显示当前在 Git 仓库中且能列出未跟踪文件。若 git init 报错,检查 git 是否已安装并在 PATH 中。