本仓库用于模拟贷前(审批前)风控流程:生成模拟数据、定义标签、做 vintage 校验、构建特征、EDA/筛选/分箱、训练 WOE 评分卡。
English TL;DR: Pre-loan risk sandbox in pandas: mock data → label (DPD30@90D) → vintage (PIT & MOB) → label window compare → feature build → EDA/screen/bin → WOE scorecard + plots.
- 模拟表:users、applications、bureau、devices、behavior_agg、loans、loan_outcomes、loan_dpd_snapshots。
- 标签定义:
y_dpd30_ever(放款后 90 天内是否出现 DPD30+),并做成熟期过滤。 - Vintage:90D 点位 cohort 以及 cohort×MOB 的经典 vintage(基于 DPD 快照)。
- 标签观察窗对比:30/60/90/180 天坏率(按 cohort 与 score decile)。
- 特征构建:按时间切分 train/valid,生成时间特征并做泄露规避。
- EDA & 筛选:缺失、PSI、IV/AUC、低方差、偏态、相关性。
- 分箱与评分卡:WOE 分箱、逐步回归、打分与分位表现。
data/:模拟数据与输出结果。data/eda/:EDA 汇总与筛选标记。data/binning/:单变量分箱结果。data/scorecard/:WOE、points、打分与分位表。data/figures/:seaborn 图(vintage、观察窗对比)。scripts/:流程脚本。
python scripts/generate_mock_data.py --outdir data
python scripts/build_model_table.py --datadir data --maturity-days 90
python scripts/build_features_90d.py --infile data/model_train_90d.csv --outdir data
python scripts/scorecard_pipeline.py --train data/features_train_90d.csv --valid data/features_valid_90d.csv --outdir data/scorecard --bins 10 --iv-threshold 0.02 --stepwise --p-enter 0.05 --p-remove 0.1- 任意脚本可加
--run-dir auto(或指定目录),输出会写入data/run_YYYYMMDD_HHMMSS/,并在该目录下生成manifest.csv记录产出路径与步骤。 - 示例(先设批次目录,再跑最小流程并记录产出):
RUN_DIR=data/run_$(date +%Y%m%d_%H%M%S)
python scripts/generate_mock_data.py --run-dir "$RUN_DIR"
python scripts/build_model_table.py --run-dir "$RUN_DIR" --datadir "$RUN_DIR"
python scripts/build_features_90d.py --run-dir "$RUN_DIR" --infile "$RUN_DIR/model_train_90d.csv"
python scripts/scorecard_pipeline.py --run-dir "$RUN_DIR" --train "$RUN_DIR/features_train_90d.csv" --valid "$RUN_DIR/features_valid_90d.csv" --bins 10 --iv-threshold 0.02 --stepwise
python scripts/scorecard_business_view.py --run-dir "$RUN_DIR"将同一批次的
--run-dir设为同一目录即可把产出集中放置,manifest.csv会累计记录输出。
- 生成模拟数据
python scripts/generate_mock_data.py --outdir data- 构建带标签的建模表(90D 成熟期)
python scripts/build_model_table.py --datadir data --maturity-days 90- Vintage 校验(90D point-in-time + MOB)
python scripts/vintage_90d.py --infile data/model_train_90d.csv --outdir data
python scripts/vintage_mob.py --snapshots data/loan_dpd_snapshots.csv --applications data/applications.csv --out data/vintage_mob_dpd30.csv
python scripts/plot_vintage_seaborn.py --infile data/vintage_mob_dpd30.csv --outdir data/figures- 标签观察窗对比(30/60/90/180 天)
python scripts/compare_label_windows.py --infile data/loan_outcomes.csv --outdir data
python scripts/plot_label_window_comparison.py --outdir data/figures- 构建特征(时间切分)
python scripts/build_features_90d.py --infile data/model_train_90d.csv --outdir data- EDA、筛选与分箱
python scripts/eda_report.py --train data/features_train_90d.csv --valid data/features_valid_90d.csv --outdir data/eda
python scripts/feature_screening.py --train data/features_train_90d.csv --outdir data/eda
python scripts/binning_univariate.py --train data/features_train_90d.csv --outdir data/binning --bins 10- 评分卡与业务视图
python scripts/scorecard_pipeline.py --train data/features_train_90d.csv --valid data/features_valid_90d.csv --outdir data/scorecard --bins 10 --iv-threshold 0.02 --stepwise --p-enter 0.05 --p-remove 0.1
python scripts/scorecard_business_view.py --out data/scorecard/scorecard_business_view.csvdata/model_dataset.csv,data/model_train_90d.csv:建模表与成熟期样本。data/vintage_90d_m*.csv,data/vintage_mob_dpd30*.csv:vintage 表。data/label_window_bad_rates_*.csv:观察窗对比表。data/features_train_90d.csv,data/features_valid_90d.csv:特征表。data/scorecard/scorecard_points.csv:评分卡分数与系数。data/scorecard/scorecard_business_view.csv:业务视角的 WOE/分数表。
Key outputs (EN quick ref)
- Modeling tables:
model_dataset.csv,model_train_90d.csv - Vintage:
vintage_90d_m*.csv,vintage_mob_dpd30*.csv - Label windows:
label_window_bad_rates_*.csv, plots indata/figures/ - Features:
features_train_90d.csv,features_valid_90d.csv,feature_columns_90d.txt - Scorecard:
scorecard_points.csv,scorecard_summary.csv, deciles,scorecard_business_view.csv
--run-dir: 批次输出目录,auto时自动创建data/run_YYYYMMDD_HHMMSS并写 manifest。--log-level: 日志等级(DEBUG/INFO/…)。--bins,--top-n: 分箱数量与保留前 N 类别(用于 binning/WOE/IV)。--iv-threshold,--auc-threshold,--corr-threshold: 特征筛选阈值。- 评分卡:
--pdo/--base-score/--base-odds控制评分刻度,--stepwise/--p-enter/--p-remove控制逐步回归。
- 各脚本默认使用
data/路径,可用参数覆盖。 - 需要集中管理产出时,使用
--run-dir,manifest 会写到该目录。 - 图表使用 seaborn/matplotlib,输出到
data/figures/。