本文是基于2022 CCF BDCI 返乡发展人群预测 [0.9117+]做的进一步优化提升,虽然没有什么很大的提升空间,但是还是共享给大家,希望能给大家一些思路。
这次特征工程提交后的A榜结果为:0.91195301485
特征离散化+特征交叉
主要思路来源于Feature Engineering for Numeric Variables
具体的特征工程代码如下:
# 离散化
all_f = [f'f{idx}' for idx in range(1, 47) if idx != 3]
for df in [train_data, test_data]:
for col in all_f:
df[f'{col}_log'] = df[col].apply(lambda x: int(np.log(x)) if x > 0 else 0)
# 特征交叉
log_f = [f'f{idx}_log' for idx in range(1, 47) if idx != 3]
for df in [train_data, test_data]:
for i in range(len(log_f)):
for j in range(i + 1, len(log_f)):
df[f'{log_f[i]}_{log_f[j]}'] = df[log_f[i]]*10000 + df[log_f[j]]
其实就是将数值特征进行 l o g log log取值后进行离散化,然后特征两两进行特征交叉,这里的特征交叉,我采用高低位的形式,即 x ∗ 10000 + y x*10000+y x∗10000+y,其他特征交叉方式也是一样可以的。
由于之前很多人提及我之前的不能复现,所以本次提供了完整的代码,方便大家复现。
代码地址:特征离散化[0.91195301485].ipynb