当前位置: 代码迷 >> 综合 >> 天池金融风控-贷款违约挑战赛 Task3 特征工程
  详细解决方案

天池金融风控-贷款违约挑战赛 Task3 特征工程

热度:0   发布时间:2024-02-21 05:45:25.0

天池金融风控-贷款违约挑战赛 Task3 特征工程

    • 1. 学习目标
    • 2. 整体思维导图
    • 3. 数据处理
      • 3.1 缺失值处理
      • 3.2 时间格式处理
      • 3.3 对象类型装换为数值类型
      • 这几天学校课程作业ddl,未完待续........

1. 学习目标

  1. 处理缺失、异常值,数据预处理以及数据分桶特征处理
  2. 学习特征交互、编码、选择的相应方法

2. 整体思维导图

在这里插入图片描述

3. 数据处理

3.1 缺失值处理

# 按照平均数填充数值型特征
data_train[numerical_fea] = data_train[numerical_fea].fillna(data_train[numerical_fea].median())
data_test_a[numerical_fea] = data_test_a[numerical_fea].fillna(data_train[numerical_fea].median())#按照众数填充类别型特征
data_train[category_fea] = data_train[category_fea].fillna(data_train[category_fea].mode()) 
data_test_a[category_fea] = data_test_a[category_fea].fillna(data_train[category_fea].mode())

3.2 时间格式处理

此处为了避免使用时间序列的格式问题,故要把train set 和 test set的时间装换为pandas里的pd.to_datetime

#转化成时间格式
for data in [data_train, data_test_a]:data['issueDate'] = pd.to_datetime(data['issueDate'],format='%Y-%m-%d') startdate = datetime.datetime.strptime('2007-06-01', '%Y-%m-%d') #构造时间特征data['issueDateDT'] = data['issueDate'].apply(lambda x: x-startdate).dt.days

3.3 对象类型装换为数值类型

在我们的模型中,所有的数据都要进行量化后才能被我们的模型使用。

def employmentLength_to_int(s): if pd.isnull(s):return selse:return np.int8(s.split()[0]) for data in [data_train, data_test_a]:data['employmentLength'].replace(to_replace='10+ years', value='10 years', inplace=True) data['employmentLength'].replace('< 1 year', '0 years', inplace=True) data['employmentLength'] = data['employmentLength'].apply(employmentLength_to_int)

这几天学校课程作业ddl,未完待续…