searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

LC风控建模(一)

2023-06-25 06:07:50
18
0
为了聚焦,每个阶段拆开展示。让大家了解全过程。本文是自己对分类、预测精确理解后,进行组件化、自动化形成的最终结果。
在kaggle上我将LC相关的文章,全部阅读了一遍。并精读了每篇文章的过程。作者的思路大多雷同,但做的很精细。很多都没有最终结果。我上次做LC分析,模型精确度也就60%左右,本文章的精细程度到每句代码。内含特征分析、值分布、决策树、k-means聚类、分箱、平滑、样本均衡等点,并附带具体可视化分析,最终形成A卡评分模型。使用逻辑回归、随机森林、Xgboost、ANN、LightGBM等模型。首次模型计算精准度98.3%以上。
按章节提供,代码中保护最全的标准。每阶段代码不做删除。
全文实现按年提取。相对配置固化、分阶段输出隔离,支持按阶段进行重复进行。
前提:
本文python3.9.5 兼容M1。conda+pip3管理依赖
# -*- encoding: utf-8 -*-
"""
@File    :   s_lc.py(通过逻辑回归、随机森林、LightGBM、XGBoost、ANNs进行A卡分析,输出模型以及评分表)
@Contact :   lou@126.com
@License :   (C)Copyright 2018-2021

@Modify Time      @Author    @Version    @Desciption
------------      -------    --------    -----------
2021/11/19 22:31   sugang.lou     1.0     Lending Club Data Model
"""
# lib库参考ReadMe.md,按基本库、第三库、自有库三部分引入
import time
import warnings
from datetime import datetime

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import hvplot.pandas  # https://hvplot.holoviz.org/
import pydotplus        # 依赖Graphviz,用于dot解析树文件
import statsmodels.api as sm
from sklearn.compose import ColumnTransformer
from sklearn.ensemble import RandomForestClassifier
from sklearn.impute import SimpleImputer
from sklearn.linear_model import LogisticRegression  # 逻辑回归
from sklearn.metrics import roc_auc_score, roc_curve, accuracy_score
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import train_test_split  # 测试集与训练集划分
from sklearn.pipeline import Pipeline  # 详解Pipline(内含):https://blog.csdn.net/SanyHo/article/details/105472795
from sklearn.preprocessing import MinMaxScaler, OneHotEncoder, \
    StandardScaler  # MinMaxScaler归一化:https://blog.csdn.net/GentleCP/article/details/109333753
from sklearn.tree import DecisionTreeClassifier, export_graphviz
import xgboost as xgb
from lightgbm import LGBMClassifier  # image not found报错解决:https://blog.51cto.com/mapengfei/2476367

import o_lc
import ofun.o_ml as o_ml
import ofun.o_utils as o_utils

warnings.filterwarnings('ignore')
np, plt, pd = o_ml.init(np, plt, pd)  # 初始化numpy matplotlib panda设置
base_dir = o_utils.get_base_dir("lc")  # 根目录
'''Credit_Risk_Analysis(Lending Club Data)-分阶
loadFile:数据装载
dataAudit:数据画像
dataClrAndPre:数据预处理,需要重建索引rest_index,并排序sort_values
modelPrepare: 建模准备
genModel: 建模
genModelExt: 建模扩展
ps:pycharm测试时,为降低flask的影响,可临时关闭flaskConsole启动窗口,去除环境变量的初始化报错。
'''
print("课题分析:构造传统信贷申请评分卡(A卡)")
# 阶段控制 stage = ['loadFile','dataAudit','dataClrAndPre','modelPrepare','genModel','genModelExt']  dataClrAndPre支持重复处理
stage = ['genModel']     # 支持按步进行,也支持连续执行

disk_file = base_dir + 'LCDataDictionary.xlsx'  # 装载列名字典
data_disc = o_ml.get_dic_excel(disk_file, 'LoanStats', 'LoanStatNew', 'LoanStatNew_trans')
loan_excel = base_dir + 'Loan_status_2007-2020Q3.gzip'
start_point, end_point = 2019, 2020  # 数据使用范围-时间过滤

file_tag = str(start_point) + "-" + str(end_point)
file = base_dir + "lc_%s.pkl" % file_tag
file_lcs = base_dir + "lc_filter_%s.pkl" % file_tag
file_sample_x = base_dir + "x_%s.pkl" % file_tag
file_sample_y = base_dir + "y_%s.pkl" % file_tag
df, df_lcs, sample_x, sample_y = o_lc.get_df_list(file, file_lcs, file_sample_x, file_sample_y)
panda常用处理:
转换/判断
改造
包含
开始/结束
统计
寻找
获取
总长度
连接
大小写
追加
重复
替换
切分
去空格
抽取
contains
startsWith/endsWith
count
findall
get
len
cat
upper/lower
pad/center
repeat
slice_replace/replace
split+expend
strip/ltrip/lstrip
extract/extractall

0条评论
作者已关闭评论
娄****刚
4文章数
0粉丝数
娄****刚
4 文章 | 0 粉丝
娄****刚
4文章数
0粉丝数
娄****刚
4 文章 | 0 粉丝
原创

LC风控建模(一)

2023-06-25 06:07:50
18
0
为了聚焦,每个阶段拆开展示。让大家了解全过程。本文是自己对分类、预测精确理解后,进行组件化、自动化形成的最终结果。
在kaggle上我将LC相关的文章,全部阅读了一遍。并精读了每篇文章的过程。作者的思路大多雷同,但做的很精细。很多都没有最终结果。我上次做LC分析,模型精确度也就60%左右,本文章的精细程度到每句代码。内含特征分析、值分布、决策树、k-means聚类、分箱、平滑、样本均衡等点,并附带具体可视化分析,最终形成A卡评分模型。使用逻辑回归、随机森林、Xgboost、ANN、LightGBM等模型。首次模型计算精准度98.3%以上。
按章节提供,代码中保护最全的标准。每阶段代码不做删除。
全文实现按年提取。相对配置固化、分阶段输出隔离,支持按阶段进行重复进行。
前提:
本文python3.9.5 兼容M1。conda+pip3管理依赖
# -*- encoding: utf-8 -*-
"""
@File    :   s_lc.py(通过逻辑回归、随机森林、LightGBM、XGBoost、ANNs进行A卡分析,输出模型以及评分表)
@Contact :   lou@126.com
@License :   (C)Copyright 2018-2021

@Modify Time      @Author    @Version    @Desciption
------------      -------    --------    -----------
2021/11/19 22:31   sugang.lou     1.0     Lending Club Data Model
"""
# lib库参考ReadMe.md,按基本库、第三库、自有库三部分引入
import time
import warnings
from datetime import datetime

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import hvplot.pandas  # https://hvplot.holoviz.org/
import pydotplus        # 依赖Graphviz,用于dot解析树文件
import statsmodels.api as sm
from sklearn.compose import ColumnTransformer
from sklearn.ensemble import RandomForestClassifier
from sklearn.impute import SimpleImputer
from sklearn.linear_model import LogisticRegression  # 逻辑回归
from sklearn.metrics import roc_auc_score, roc_curve, accuracy_score
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import train_test_split  # 测试集与训练集划分
from sklearn.pipeline import Pipeline  # 详解Pipline(内含):https://blog.csdn.net/SanyHo/article/details/105472795
from sklearn.preprocessing import MinMaxScaler, OneHotEncoder, \
    StandardScaler  # MinMaxScaler归一化:https://blog.csdn.net/GentleCP/article/details/109333753
from sklearn.tree import DecisionTreeClassifier, export_graphviz
import xgboost as xgb
from lightgbm import LGBMClassifier  # image not found报错解决:https://blog.51cto.com/mapengfei/2476367

import o_lc
import ofun.o_ml as o_ml
import ofun.o_utils as o_utils

warnings.filterwarnings('ignore')
np, plt, pd = o_ml.init(np, plt, pd)  # 初始化numpy matplotlib panda设置
base_dir = o_utils.get_base_dir("lc")  # 根目录
'''Credit_Risk_Analysis(Lending Club Data)-分阶
loadFile:数据装载
dataAudit:数据画像
dataClrAndPre:数据预处理,需要重建索引rest_index,并排序sort_values
modelPrepare: 建模准备
genModel: 建模
genModelExt: 建模扩展
ps:pycharm测试时,为降低flask的影响,可临时关闭flaskConsole启动窗口,去除环境变量的初始化报错。
'''
print("课题分析:构造传统信贷申请评分卡(A卡)")
# 阶段控制 stage = ['loadFile','dataAudit','dataClrAndPre','modelPrepare','genModel','genModelExt']  dataClrAndPre支持重复处理
stage = ['genModel']     # 支持按步进行,也支持连续执行

disk_file = base_dir + 'LCDataDictionary.xlsx'  # 装载列名字典
data_disc = o_ml.get_dic_excel(disk_file, 'LoanStats', 'LoanStatNew', 'LoanStatNew_trans')
loan_excel = base_dir + 'Loan_status_2007-2020Q3.gzip'
start_point, end_point = 2019, 2020  # 数据使用范围-时间过滤

file_tag = str(start_point) + "-" + str(end_point)
file = base_dir + "lc_%s.pkl" % file_tag
file_lcs = base_dir + "lc_filter_%s.pkl" % file_tag
file_sample_x = base_dir + "x_%s.pkl" % file_tag
file_sample_y = base_dir + "y_%s.pkl" % file_tag
df, df_lcs, sample_x, sample_y = o_lc.get_df_list(file, file_lcs, file_sample_x, file_sample_y)
panda常用处理:
转换/判断
改造
包含
开始/结束
统计
寻找
获取
总长度
连接
大小写
追加
重复
替换
切分
去空格
抽取
contains
startsWith/endsWith
count
findall
get
len
cat
upper/lower
pad/center
repeat
slice_replace/replace
split+expend
strip/ltrip/lstrip
extract/extractall

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0