功能工程的一个热点与分组



**注意,我还没有10个rep,所以我不能发布图像

使用成人人口普查(目标是预测哪些被观察的人的年收入将超过5万美元/年(数据集进行一些ML实践,并对特征工程提出了问题。。。

该数据集有列,其中8列是分类的(工人阶级、教育程度(由于存在整数education.num而删除(、婚姻状况、职业、关系、种族、性别、国籍和收入(

这些

在做分析时,我首先将收入更改为1,表示>50K/年和0表示<5万/年。

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

然而,在研究其他变量时,我需要一些关于如何处理它们的指导/建议。例如,"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()

工人阶级

然而,我的第一个想法是使用一个热编码,如workclassnative.countryracemarital.statusoccupation都是无序的。这将创建近100列。

我的下一个想法是根据某个列值具有收入>50K,根据下方的图挑选

市场状态

据此,我对每一列的倾向都是

功能工程决策
工作类drop
婚姻状况Group(已婚+目前=1,未结婚/分居=0
职业Group(白领工作(高管、教授、技术、销售(=1,蓝领工作(所有其他(=0
race不确定,只有5个变量,所以一个热门或一组由白人与非白人组成
关系Group(丈夫或妻子=1,无婚姻关系=0
sex一个热点,或男性=1,女性=0,不确定是否需要输入
native.country大量变量,我认为按美国与非美国分组最有意义

虽然成人人口普查是一个经典的玩具数据集,但我记不起所有的细节,所以我的答案可能没有你预期的那么丰富。尽管如此,我还是喜欢你的决定,除了这个想法:

我的下一个想法是根据某个列值具有收入的概率手动对它们进行分组>50K,根据下方的图挑选

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

附言:workclasseducation.num真的一样吗?🤔

最新更新