1. 信用评分卡业务理解与项目初始化

信用评分卡业务理解与项目初始化 学习卡片

业务目标与范围

信用评分卡的核心业务目标:用可解释的量化模型预测借款人未来一段时间内的违约概率,并将概率映射为分数,用于审批、额度、定价等决策。本案例只做项目初始化,不训练模型。

  • 业务目标:输出一个可复用的评分卡项目骨架,后续案例在此结构上逐步加入数据、特征、建模、评分映射与监控。
  • 监管要求:模型需可解释、可追溯、可审计;数据需合规采集与留存;评分结果不得使用受保护特征(如性别、种族等)作为直接决策依据。
  • 项目范围:本案例仅创建目录结构、配置文件与版本控制初始化,不涉及数据与算法。

目录结构设计

按数据、特征、模型、评分、监控、测试分层,保证后续每个案例都有明确落点。

credit_scorecard/ ├── data/ 原始与处理后数据(不纳入版本控制) ├── features/ 特征工程脚本与特征定义 ├── models/ 模型训练、评估与持久化 ├── scorecard/ 评分映射、分箱与分数校准 ├── monitoring/ 稳定性与性能监控 ├── tests/ 单元测试与数据校验 ├── configs/ 配置文件(YAML) ├── .gitignore └── README.md

初始化脚本

以下脚本一次性创建目录、写入配置与忽略规则,并初始化 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 中。