特征工程的单热与分组

One-hot vs Grouping for Feature Engineering

**注意我还没有 10 个代表,所以我不能 post 图片

使用 Adult Census(目标是预测哪些观察到的人的年收入将超过 5 万美元/年)数据集进行某些 ML 实践,并对特征工程提出问题...

数据集有列,其中 8 列是分类的(工作类别、教育(因为整数 education.num 存在而删除)、marital.status、职业、关系、种族、性别、native.country , 和收入)

these

在做分析时,我首先将年收入>5 万美元的收入改为 1,<5 万美元/年的收入改为 0。

data['income'] = data['income'].replace({'<=50K':0, '>50K' :1})

但是,在查看其他变量时,我需要一些 guidance/advice 来了解如何处理它们。例如,'workclass' 列

plt.figure(figsize = (15,5))
sns.barplot(x = data['workclass'], y = data['income'])
plt.xlabel('Working Class')
plt.ylabel('Likelihood of income >= 50K')
plt.show()

workclass

我的第一个想法是使用one-hot编码,然而,像workclassnative.countryracemarital.statusoccupation是全部 未排序 。这将创建近 100 列。

我的下一个想法是根据某个列值的收入 > 5 万美元的概率手动对它们进行分组,根据如下图选择

Martital.Status

依此,我对每一列的倾向是

Column Feature Engineering Decision
workclass drop
marital.status Group (married+present = 1, not married/estranged = 0
occupation Group (white collar jobs (exec,prof,tech,sales) = 1, blue collar (all else) = 0
race Unsure, only 5 variables so could one-hot or group by white vs non-white?
relationship Group (Husband or Wife = 1, No marital relationship = 0
sex One-hot, or Male = 1, Female = 0, Unsure need input
native.country Tons of variables, I think Group by US vs non-US makes most sense

Here 是完整的 jupyter notebook 的 link,其中包含所有分类变量的图表。那么,你能帮我确定这是否是对数据集中的列进行特征工程的正确方法吗?

尽管 Adult Census 是一个经典的玩具数据集,但我无法回忆起所有细节,因此我的回答可能不如您预期的那样信息丰富。不过,我喜欢你的所有决定,也许除了这个想法:

My next idea was to manually group them based on the probability of a certain column value having an income >K, picked based on plots like the one below

由于您的目标是建立一个模型来预测未观察到的个人的收入状况,因此将您的类别直接与目标相关联可能会导致过度拟合;在测试数据中,类别的分布可能与训练数据中的不同。但是,这并不意味着您根本不应该考虑目标 类。实际上,请尝试计算类别列的 子样本 的概率,或者在获得的概率中添加噪声。请参阅 category_encoders 包以获取灵感。祝你好运!

P.S。 workclasseducation.num 真的一样吗?