项目简介
Yihuier (一会儿) 是一个专业的信用评分卡建模 Python 工具包,提供从数据探索到模型部署的全流程支持。采用面向对象设计,将评分卡建模的各个步骤封装为独立的模块类,让建模过程变得简单、高效、可复制。
设计理念
专业性与易用性并重
传统的评分卡建模工具要么功能单一,要么配置复杂。Yihuier 致力于:
- 开箱即用:简洁的 API 设计,几行代码完成复杂建模流程
- 专业完整:覆盖评分卡建模全流程的各个环节
- 高度可定制:支持自定义参数和方法
- 易于扩展:模块化设计,便于二次开发
模块化架构
系统采用模块化架构,将评分卡建模的各个步骤封装为独立的模块类:
- EDA 模块:数据探索性分析
- 数据预处理模块:数据清洗和预处理
- 分箱模块:变量分箱和 WOE 转换
- 变量选择模块:特征选择和降维
- 模型评估模块:模型性能评估
- 评分卡实现模块:评分卡刻度和分数转换
- 评分卡监控模块:模型监控和 PSI 分析
- 聚类模块:客户聚类分析
- 流水线模块:端到端建模流程
主类统一管理
通过 Yihuier 主类统一管理数据和状态,避免了传统函数式编程中参数传递的繁琐:
python
from yihuier import Yihuier
# 初始化
yh = Yihuier(data, target='dlq_flag')
# 各模块共享数据,无需重复传递
yh.eda_module.auto_eda_simple()
yh.dp_module.delete_missing_var(threshold=0.2)
yh.binning_module.binning_num(col_list=['v1', 'v2'], max_bin=5)AI 智能建模
Yihuier 内置了专业的风控建模 Skill,让 AI 助手(如 Claude Code)成为你的建模助手:
- 自动引导:10 步完整建模流程,从数据探索到模型部署
- 质量保证:内置 AUC ≥ 0.65、KS ≥ 0.15、PSI < 0.25 质量标准
- 智能诊断:自动检测问题并提供优化建议
- 最佳实践:融合行业最佳实践和经验法则
核心优势
1. 完整的建模流程支持
| 功能模块 | 支持功能 | 状态 |
|---|---|---|
| 数据探索 | 自动化 EDA 报告、可视化图表 | ✅ |
| 数据预处理 | 缺失值处理、常变量删除、异常值处理 | ✅ |
| 变量分箱 | ChiMerge、等频、等距、决策树分箱 | ✅ |
| WOE 转换 | 自动 WOE 编码、IV 值计算 | ✅ |
| 变量选择 | XGBoost、随机森林、相关性筛选 | ✅ |
| 模型评估 | ROC、KS、交叉验证、学习曲线 | ✅ |
| 评分卡实现 | 刻度计算、分数转换、cutoff 设置 | ✅ |
| 模型监控 | PSI 分析、稳定性监控、偏移检测 | ✅ |
2. 丰富的分箱方法
- ChiMerge:基于卡方检验的最优分箱
- 等频分箱:保证每箱样本数均衡
- 等距分箱:保证分箱宽度一致
- 单调性分箱:确保风险趋势单调
- 手动分箱:支持自定义分箱规则
3. 多种变量选择策略
- IV 筛选:基于预测强度选择变量
- 特征重要性:基于 XGBoost/随机森林的变量重要性
- 相关性筛选:考虑 IV/重要性的相关性去重
- 显著性筛选:基于统计显著性的变量筛选
4. 完善的模型评估体系
- 区分度指标:AUC、KS、提升度
- 稳定性指标:交叉验证、学习曲线
- 准确性指标:精确率、召回率、F1-score
- 可视化分析:ROC 曲线、KS 曲线、混淆矩阵
5. 生产级评分卡实现
- 灵活刻度:自定义基础分、PDO、odds
- 分数转换:自动转换为业务可解释分数
- cutoff 验证:精确率、召回率、误伤率分析
- 模型监控:PSI 稳定性分析、分数分布监控
适用场景
银行风控
- 信用卡评分:申请评分卡、行为评分卡
- 贷款审批:个人贷款、企业经营贷款
- 风险预警:早期风险识别、风险等级划分
消费金融
- 现金贷:快速审批、自动化决策
- 分期付款:额度评估、期数优化
- 反欺诈:异常交易检测、身份验证
征信机构
- 企业征信:企业信用评估、风险预警
- 个人征信:个人信用报告、信用评分
- 数据服务:信用数据加工、模型服务
学术研究
- 方法研究:评分卡方法对比和改进
- 算法验证:新算法在金融数据上的验证
- 教学演示:风控建模教学示例
技术特点
面向对象设计
- 封装性好:数据和状态封装在类中
- 可维护性强:代码结构清晰,易于理解和维护
- 可扩展性好:便于添加新功能和新方法
类型提示完整
- Python 3.13+:使用最新的类型提示语法
- IDE 友好:完整的类型提示提升开发体验
- 类型安全:减少运行时错误
代码质量保证
- 测试覆盖:61 个单元测试,覆盖核心功能
- 代码规范:遵循 PEP 8 编码规范
- 文档完整:详细的 API 文档和使用示例
性能优化
- 向量化计算:基于 NumPy/Pandas 的高效计算
- 并行处理:支持多进程特征工程
- 内存优化:大数据集内存管理优化
与其他工具的对比
| 特性 | Yihuier | Scorecardpy | Toad | SCikiLearn |
|---|---|---|---|---|
| 分箱方法 | 4种 | 2种 | 3种 | 1种 |
| WOE 转换 | ✅ | ✅ | ✅ | ❌ |
| 变量选择 | 3种策略 | 1种 | 2种 | ❌ |
| 模型评估 | 完整 | 基础 | 完整 | 基础 |
| 评分卡实现 | 完整 | 部分 | 部分 | ❌ |
| 模型监控 | ✅ | ❌ | ❌ | ❌ |
| Python 版本 | 3.13+ | 3.6+ | 3.6+ | 3.6+ |
| 类型提示 | 完整 | 无 | 无 | 部分 |
| 中文文档 | ✅ | ❌ | 部分 | ❌ |
| 易用性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ |
开发历程
Yihuier 诞生于真实的评分卡建模项目实践:
- 痛点发现:现有工具要么功能单一,要么配置复杂
- 需求分析:总结真实项目中的常见需求
- 架构设计:采用面向对象的模块化架构
- 功能实现:逐步实现各功能模块
- 测试验证:使用真实数据验证功能正确性
- 文档完善:编写详细的使用文档和示例
快速体验
python
import pandas as pd
from yihuier import Yihuier
# 加载数据
data = pd.read_csv('data.csv')
# 初始化
yh = Yihuier(data, target='dlq_flag')
# 快速建模
yh.dp_module.fillna_num_var(yh.get_numeric_variables(), fill_type='0')
yh.binning_module.binning_num(['v1', 'v2', 'v3'], max_bin=5, method='ChiMerge')
yh.binning_module.woe_transform()
# 变量选择
xg_imp, _, xg_cols = yh.var_select_module.select_xgboost(
yh.get_numeric_variables()[:10], imp_num=5
)
# 模型训练
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
data_woe = yh.binning_module.data_woe
X = data_woe[xg_cols]
y = data_woe[yh.target]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
model = LogisticRegression()
model.fit(X_train, y_train)
# 模型评估
y_pred = model.predict_proba(X_test)[:, 1]
yh.me_module.plot_roc(y_test, y_pred)
yh.me_module.plot_model_ks(y_test, y_pred)
# 评分卡实现
A, B, base_score = yh.si_module.cal_scale(score=600, odds=50, PDO=20, model=model)许可证
本项目采用 MIT 许可证发布,欢迎自由使用、修改和分发。
贡献
欢迎贡献代码、报告问题或提出改进建议!请查看 GitHub 仓库 了解详情。