这是一个用于展示信贷风险建模流程的个人项目,覆盖从数据准备、特征处理、模型训练、模型评估到结果导出的完整分析链路。
项目目前由一套可复用模型脚本和一个真实数据实操 notebook 组成:
src/credit_model.py:封装可复用的逻辑回归训练、预测、评估和结果导出流程。src/creditsimu.ipynb:调用credit_model.py,使用真实信贷数据集data/LC_loans_granting_model_dataset.csv完成一次模型实操测试。
通过这种结构,可以将通用建模逻辑和具体数据实验拆开,既便于复用脚本,也便于在 notebook 中展示真实数据场景下的完整操作过程。
credit_risk_analysis/
├── data/
│ └── LC_loans_granting_model_dataset.csv
├── outputs/
│ ├── feature_coefficients.csv
│ ├── model_report.csv
│ └── predictions_sample.csv
├── src/
│ ├── credit_model.py
│ ├── creditsimu.ipynb
│ └── sql_practice.sql
├── requirements.txt
└── README.md
- 封装逻辑回归训练、预测、评估和输出保存函数,便于复用。
- 构造模拟信贷申请样本,快速验证模型脚本的基础流程。
- 在 notebook 中读取真实信贷数据,调用复用脚本完成违约预测模型测试。
- 对数值变量进行标准化,对收入、贷款金额等偏态变量进行对数变换。
- 对雇佣年限、贷款用途、住房状态等类别变量进行 One-Hot 编码。
- 使用逻辑回归模型预测违约概率。
- 输出 ROC-AUC、阈值、混淆矩阵、风险分层和特征系数解释。
- 提供 SQL 示例,用于补充申请量、违约率、风险分层等分析场景。
pip install -r requirements.txt如果需要在本地打开 notebook,可以使用 VS Code、JupyterLab 或 Notebook 环境。
python src/credit_model.pycredit_model.py 封装了逻辑回归模型的训练、预测、评估和导出函数。直接运行该脚本时,会使用内置的模拟信贷数据快速验证完整流程,并将评估结果保存到 outputs/ 目录。
打开并依次运行:
src/creditsimu.ipynb
creditsimu.ipynb 会调用 credit_model.py 中的复用函数,并使用以下真实信贷数据文件:
data/LC_loans_granting_model_dataset.csv
真实数据测试中使用的主要字段包括:
- 数值变量:
dti_n、fico_n、revenue、loan_amnt - 类别变量:
emp_length、purpose、home_ownership_n - 目标变量:
Default
outputs/ 目录中的最终文件为 src/creditsimu.ipynb 基于真实信贷数据运行后的模型测试结果:
model_report.csv:模型评估指标,包括 ROC-AUC、分类阈值和混淆矩阵结果。feature_coefficients.csv:逻辑回归特征系数及其风险方向解释。predictions_sample.csv:样本预测结果,包括真实违约标签、预测违约概率和风险分层。
注意:src/credit_model.py 和 src/creditsimu.ipynb 共用同一套输出路径。如果直接运行 credit_model.py 的模拟数据验证流程,会覆盖当前真实数据模型测试结果;如需保留真实数据结果,请最后运行 src/creditsimu.ipynb。
当前可复用模型采用逻辑回归,优点是训练速度快、可解释性强,适合用于展示信贷风险评分中的变量方向和风险贡献。
模型流程包括:
- 选择建模字段。
- 划分训练集和测试集。
- 构建数值、对数和类别变量处理管道。
- 训练逻辑回归模型。
- 输出预测违约概率。
- 按预测概率划分风险等级。
- 导出评估指标、特征解释和预测样本。
src/sql_practice.sql 提供了信贷风控常见分析场景示例,包括:
- 按城市统计申请量、违约率和平均贷款金额。
- 按负债收入比分层统计违约率。
- 找出每个城市贷款金额最高的申请记录。
- 按月统计申请量和违约率。
- 补充真实数据 EDA 与关键变量分布分析。
- 增加 KS、Lift、PSI、WOE/IV 等风控评估指标。
- 完善缺失值处理、分箱和业务衍生特征。
- 对比逻辑回归、随机森林、XGBoost、LightGBM 等模型效果。
- 补充阈值选择、风险分层和策略效果分析。