PSI的模拟计算——01数据准备

PSI的模拟计算——数据准备

  • 数据来源
  • PSI指标的计算
  • 数据处理思路
    • 划分思路
    • 执行脚本(Python)

数据来源

本次用于PSI模拟计算的数据来自于天池零基础入门金融风控-贷款违约预测使用其中的train.csv数据集,个字段的含义见原网页地址。

PSI指标的计算

有关PSI指标是如何计算的请见风控模型—群体稳定性指标(PSI)深入理解应用

数据处理思路

在理解了如何计算PSI指标后,那么对train.csv的处理可大致划分为用于训练模型的开发样本和用于计算PSI指标的月度进件数据。

划分思路

  1. 原始数据中给出了字段issueDate和term两个有关时间的字段那么就可据此计算出endDate=issueDate+term;
  2. 通过逻辑回归算法对数据进行建模就要求数据有标签并且要求数据量最好在5W左右,那么根据endDate统计出可将2016年之前的数据用于开发模型;
  3. 那么将issueDate在2016年之后的数据按月度进行划分即可计算模型每月的PSI值;
  4. 这么做必然会导致部分数据的缺失,例如一个样本的issueDate为2015-12但endDate在2018-12那么该样本就会被抛弃掉。

执行脚本(Python)

import pandas as pd
from datetime import datetime, timedeltadef splitDate(data):# 计算结束日期issueDate = pd.to_datetime(data['issueDate'])endDate = []for i in range(len(issueDate)):days = data['term'][i]*365deltaDays = timedelta(int(days))end = issueDate[i] + deltaDaysendDate.append(end)endDate = pd.Series(endDate)# 按endDate对数据集进行划分data['endDate'] = endDatedata['endDate_month'] = data.endDate.apply(lambda x: datetime.strftime(x, '%Y-%m'))# 以5W条数据作为划分依据确定划分时间为2016年,分析过程略# endDate在2016年之前的数据用于训练,issueDate从2016年开始train = data.loc[data['endDate_month'] < '2016-01', :]data_after_2016 = data.loc[data.issueDate >= '2016-01-01', :]# 提取issuDate的年-月作为之后的划分依据data_after_2016['issueDate_month'] = data_after_2016['issueDate'].apply(lambda x: x[:7])return train, data_after_2016if __name__ == "__main__":import_path = input("Please enter the path of the data:")export_path = input("Please enter the data output path:")data = pd.read_csv(import_path, index_col=0)train, data_after_2016 = splitDate(data)# 存储数据train.to_csv(export_path+'\\train.csv')# 拆分文件dict_ = {}for year_month in set(data_after_2016['issueDate_month']):dict_[year_month] = data_after_2016.loc[data_after_2016['issueDate_month']==year_month, :]# 保存数据for key in dict_.keys():dict_[key].index = range(len(dict_[key]))dict_[key].to_csv(export_path+'\\%s.csv' % (key))


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部