python - 我应该将特征选择与一种热编码一起使用吗?
问题描述
我有一个难题,我正在使用一种热编码,我需要进行特征选择(对于分类和数字特征),我有一些并不重要的特征,但我不想使用一些算法来做到这一点,而不是手动。我的问题有两个-
- 我可以使用什么特征选择技术来做到这一点?
- 我是在一个热编码之后还是之前做的?
解决方案
如果您有许多特征,并且其中许多特征可能与模型无关,则特征选择将使您能够丢弃它们并将您的数据集限制为最相关的特征。
以下是在这些情况下需要考虑的几个关键方面:
- 维度的诅咒
当您处理大型数据集时,这通常是至关重要的一步。例如,盲目地一次性编码所有分类特征可能会导致大量数据帧,甚至可能无法存储到内存中,更不用说用于 ML 模型了。在这种情况下,您可能需要减少要编码的特征数量或查看其他分类编码器,例如贝叶斯编码器(参见答案的最后一部分)。
- 特征重要性
不做特征选择的一个负面方面,非常雄辩地放在这里,可能是我们有许多高度相关的特征,当分析特征重要性时,你得到的重要性可能并不表明它们的实际相关性。
回答你问题的第二部分,如果你拥有的特征可能是相关的并且你已经做了一些特征工程,那么你可以对它们进行编码,如果你最终有很多特征,那么你可以执行特征选择并减少维度结果数据集。有许多特征选择技术。您可以在Feature selection中找到 scikit-learn 中可用的列表。
根据一些评论...
- 我应该使用 LabelEncoder 吗?
首先,由于您在评论中提到使用 LabelEncoder,请记住,此编码器仅适用于标签,而不适用于功能!请参阅LabelEncoder 了解分类特征? .
- 我应该如何处理高基数特征?
对于分类特征,如果它们具有高基数,则最好研究贝叶斯编码器。请参阅此相关问题:如何编码具有高基数的分类特征?
推荐阅读
- deep-learning - 如何更改语义分割的填充?
- javascript - TypeError:this.props.header 不是函数
- gradle - 如何在父文件夹的多模块 gradle 项目中声明公共依赖项
- c# - 如何过滤父级内的子列表并返回过滤了子列表的父级
- visual-studio-2017 - 对 VS 2017 的 ANTLR 语言支持
- mysql - 获取此mysql查询的中值
- python - 如何将样式应用于 Django 表单?
- python - 每次使用cross_val_score时如何洗牌?
- css - 显示隐藏内容 - 外观流畅
- python - 从python中的目录读取文件并对其进行排序