分类型特征 数值型特征-金融贷款违约预测特征工程

分类型特征 数值型特征-金融贷款违约预测特征工程,第1张

分类型特征 数值型特征-金融贷款违约预测特征工程

参考该博主的特征工程

#根据本身的含义进行看是类别变量还是数值变量
#根本不是根据object 和int
#类别变量:本身不是数值表示的
#数值变量,不管是连续还是离散,本身就是用数值表示的
#还有一种本身不是数值表示的,但是匿名处理之后用连续数值表示的一些变量
#“policyCode”,唯一值,去掉,ID 去掉

#首先找出,分类型特征都有哪些
cate = Xtrain.columns[Xtrain.dtypes == "object"].tolist()
#除了特征类型为"object"的特征们,还有虽然用数字表示,但是本质为分类型特征的云层遮蔽程度
cloud = ["Cloud9am","Cloud3pm"]
cate = cate + cloud
cate
#对于分类型特征,我们使用众数来进行填补
from sklearn.impute import SimpleImputer






# pd.get_dummies参数drop_first表示移除第一个类别
data_df = pd.get_dummies(data_df, columns=['grade', 'subGrade', 'homeOwnership', 'verificationStatus', 'purpose', 'regionCode'], drop_first=True)

for f in ['employmentTitle', 'postCode', 'title']:
    data_df[f+'_cnts'] = data_df.groupby([f])['id'].transform('count') # 类别特征f的计数
    data_df[f+'_rank'] = data_df.groupby([f])['id'].rank(ascending=False).astype(int) # f在某个类别下的倒序排名
    del data_df[f]

特征构造

for col in ['grade', 'subGrade']: 
    temp_dict = data_df.groupby([col])['isDefault'].agg(['mean']).reset_index().rename(columns={'mean': col + '_target_mean'})
    temp_dict.index = temp_dict[col].values
    temp_dict = temp_dict[col + '_target_mean'].to_dict() # 将Series转换为字典{index:value}
    data_df[col + '_target_mean'] = data_df[col].map(temp_dict)

for item in ['n0','n1','n2','n2.1','n4','n5','n6','n7','n8','n9','n10','n11','n12','n13','n14']:
    data_df['grade_to_mean_' + item] = data_df.groupby(['grade'])[item].transform('mean')
    data_df['grade_to_std_' + item] = data_df.groupby(['grade'])[item].transform('std')

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5689975.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存