Skip to content

项目简介 ​

Yihuier (一会儿) 是一个专业的信用评分卡建模 Python 工具包,提供从数据探索到模型部署的全流程支持。采用面向对象设计,将评分卡建模的各个步骤封装为独立的模块类,让建模过程变得简单、高效、可复制。

设计理念 ​

专业性与易用性并重 ​

传统的评分卡建模工具要么功能单一,要么配置复杂。Yihuier 致力于:

  • 开箱即用:简洁的 API 设计,几行代码完成复杂建模流程
  • 专业完整:覆盖评分卡建模全流程的各个环节
  • 高度可定制:支持自定义参数和方法
  • 易于扩展:模块化设计,便于二次开发

模块化架构 ​

系统采用模块化架构,将评分卡建模的各个步骤封装为独立的模块类:

  1. EDA 模块:数据探索性分析
  2. 数据预处理模块:数据清洗和预处理
  3. 分箱模块:变量分箱和 WOE 转换
  4. 变量选择模块:特征选择和降维
  5. 模型评估模块:模型性能评估
  6. 评分卡实现模块:评分卡刻度和分数转换
  7. 评分卡监控模块:模型监控和 PSI 分析
  8. 聚类模块:客户聚类分析
  9. 流水线模块:端到端建模流程

主类统一管理 ​

通过 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 质量标准
  • 智能诊断:自动检测问题并提供优化建议
  • 最佳实践:融合行业最佳实践和经验法则

使用 AI Skill

如果你使用 Claude Code,只需说 "帮我建立信用评分卡模型",Skill 会自动触发,AI 助手将引导你完成整个建模流程。

查看 AI Skill 文档 了解更多。

核心优势 ​

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 的高效计算
  • 并行处理:支持多进程特征工程
  • 内存优化:大数据集内存管理优化

与其他工具的对比 ​

特性YihuierScorecardpyToadSCikiLearn
分箱方法4种2种3种1种
WOE 转换✅✅✅❌
变量选择3种策略1种2种❌
模型评估完整基础完整基础
评分卡实现完整部分部分❌
模型监控✅❌❌❌
Python 版本3.13+3.6+3.6+3.6+
类型提示完整无无部分
中文文档✅❌部分❌
易用性⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

开发历程 ​

Yihuier 诞生于真实的评分卡建模项目实践:

  1. 痛点发现:现有工具要么功能单一,要么配置复杂
  2. 需求分析:总结真实项目中的常见需求
  3. 架构设计:采用面向对象的模块化架构
  4. 功能实现:逐步实现各功能模块
  5. 测试验证:使用真实数据验证功能正确性
  6. 文档完善:编写详细的使用文档和示例

快速体验 ​

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 仓库 了解详情。

基于 MIT 许可证发布