当前位置:   article > 正文

LightGBM算法案例实战——客户违约预测模型_lightgbm predict_proba

lightgbm predict_proba

案例背景

银行等金融机构经常会根据客户的个人资料、财产等情况,来预测借款客户是否会违约,从而进行贷前审核,贷中管理,贷后违约处理等工作。金融处理的就是风险,需要在风险和收益间寻求到一个平衡点,现代金融某种程度上便是一个风险定价的过程,通过个人的海量数据,从而对其进行风险评估并进行合适的借款利率定价,这便是一个典型的风险定价过程,这也被称之为大数据风控。

模型搭建

1.读取数据

  1. import pandas as pd
  2. df = pd.read_excel('客户信息及违约表现.xlsx')
  3. df.head()

2.提取特征变量和目标变量 

  1. X = df.drop(columns='是否违约')
  2. Y = df['是否违约']

3.划分训练集和测试集

  1. from sklearn.model_selection import train_test_split
  2. X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=123)

4.模型训练及搭建

  1. from lightgbm import LGBMClassifier
  2. model = LGBMClassifier()
  3. model.fit(X_train, y_train)

模型预测及评估

  1. # 预测测试集数据
  2. y_pred = model.predict(X_test)
  3. print(y_pred)

  1. # 预测值和实际值对比
  2. a = pd.DataFrame() # 创建一个空DataFrame
  3. a['预测值'] = list(y_pred)
  4. a['实际值'] = list(y_test)
  5. a.head()

 

  1. from sklearn.metrics import accuracy_score
  2. score = accuracy_score(y_pred, y_test)
  3. score

 

  1. # 查看预测属于各个分类的概率
  2. y_pred_proba = model.predict_proba(X_test)
  3. # 绘制ROC曲线
  4. from sklearn.metrics import roc_curve
  5. fpr, tpr, thres = roc_curve(y_test, y_pred_proba[:,1])
  6. import matplotlib.pyplot as plt
  7. plt.plot(fpr, tpr)
  8. plt.show()

 

  1. # AUC值
  2. from sklearn.metrics import roc_auc_score
  3. score = roc_auc_score(y_test, y_pred_proba[:,1])
  4. score

 

  1. # 特征重要性
  2. model.feature_importances_

 

  1. features = X.columns # 获取特征名称
  2. importances = model.feature_importances_ # 获取特征重要性
  3. # 通过二维表格形式显示
  4. importances_df = pd.DataFrame()
  5. importances_df['特征名称'] = features
  6. importances_df['特征重要性'] = importances
  7. importances_df.sort_values('特征重要性', ascending=False)

 

模型参数调优 

  1. # 参数调优
  2. from sklearn.model_selection import GridSearchCV # 网格搜索合适的超参数
  3. parameters = {'num_leaves': [10, 15, 31], 'n_estimators': [10, 20, 30], 'learning_rate': [0.05, 0.1, 0.2]}
  4. model = LGBMClassifier() # 构建分类器
  5. grid_search = GridSearchCV(model, parameters, scoring='roc_auc', cv=5) # cv=5表示交叉验证5次,scoring='roc_auc'表示以ROC曲线的AUC评分作为模型评价准则
  1. # 输出参数最优值
  2. grid_search.fit(X_train, y_train) # 传入数据
  3. grid_search.best_params_ # 输出参数的最优值

  1. # 重新搭建分类器
  2. model = LGBMClassifier(num_leaves=15, n_estimators=20,learning_rate=0.1)
  3. model.fit(X_train, y_train)
  1. # 查看ROC曲线
  2. y_pred_proba = model.predict_proba(X_test)
  3. from sklearn.metrics import roc_curve
  4. fpr, tpr, thres = roc_curve(y_test, y_pred_proba[:,1])
  5. import matplotlib.pyplot as plt
  6. plt.plot(fpr, tpr)
  7. plt.show()

  1. # 查看AUC值
  2. y_pred_proba = model.predict_proba(X_test)
  3. from sklearn.metrics import roc_auc_score
  4. score = roc_auc_score(y_test, y_pred_proba[:, 1])
  5. score

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/258044
推荐阅读
  

闽ICP备14008679号