特征工程总结整理
1. 特征工程中封装好的,各类型特征添加函数
# 1.1 统计特征处理函数
# df: 添加特征的dataframe
# df_group: 特征生成的数据集
# group_cols: group by 的列
# value_col: 被统计的列
# agg_ops:处理方式 包括:count,mean,sum,std,max,min,nunique
# colname: 新特征的名称
def add_agg_feature_names(df, df_group, group_cols, value_col, agg_ops, col_names):
df_group[value_col]=df_group[value_col].astype('float')
df_agg = pd.DataFrame(df_group.groupby(group_cols)[value_col].agg(agg_ops)).reset_index()
df_agg.columns = group_cols + col_names
df = df.merge(df_agg, on=group_cols, how="left")
return df
# 1.2 统计特征处理函数 多类型聚合处理+自定义名称
# 名称按照keyword+'_'+value_col+'_'+op 自动增加
def add_agg_feature(df, df_group, group_cols, value_col, agg_ops, keyword):
col_names=[]
for op in agg_ops:
col_names.append(keyword+'_'+value_col+'_'+op)
df=add_agg_feature_names(df, df_group, group_cols, value_col, agg_ops, col_names)
return df
# 1.3 增加一个count(计数)特征
def add_count_new_feature(df, df_group, group_cols, new_feature_name):
df_group[new_feature_name] = 1
df_group = df_group.groupby(group_cols).agg('sum').reset_index()
df = df.merge(df_group, on=group_cols, how="left")
return df