数据集特征编码和缩放
Posted
技术标签:
【中文标题】数据集特征编码和缩放【英文标题】:Dataset features Encoding and Scaling 【发布时间】:2021-03-09 16:59:01 【问题描述】:我有一个具有非序数分类特征的数据集。在训练机器学习模型(线性 SVC)之前转换它们(编码 + 缩放)的最佳方法是什么?
我尝试过的事情:
标签编码 - 这有效。但是缩放没有意义,因为功能中的不同类别没有任何特定顺序。
One-Hot encoding - 一个特征中有数千个独特的类别,这通过创建数千列使 ML 模型变得复杂。
计数编码 - 我的训练-测试拆分没有训练集中某个特征的所有唯一类别,当我对这些特征进行计数编码时,这会在测试集中引入 NaN。
感谢您的帮助!
【问题讨论】:
【参考方案1】:要解决您在测试集中有一些不在训练集中的唯一值的问题,您可以尝试执行以下操作:
-
使用
df = train.append(test)
合并训练数据集
应用您之前使用的编码
使用以下方法将数据集拆分回训练和测试:
train = df.head(len(train))
test = df.tail(len(test))
根据我的经验,我可以说 LabelEncoding 和 OneHotEncoding 是编码非序数特征的一些最佳技术。
希望这会有所帮助:)
【讨论】:
假设我遵循这个并应用标签编码。我可以将其传递给 ML 模型而不进行任何缩放吗? @VamsiMohanRamineedi。标签编码和 OneHot 编码是针对分类的列进行的,即值不是连续的而是离散的。所以你不需要缩放它们。对于连续列,建议对其进行缩放,以使它们位于同一范围内。是的,一旦你附加了你的测试,你就可以应用你的标签编码将它们拆分回训练和测试并完成。您可以将其传递给您的 ML 模型以上是关于数据集特征编码和缩放的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用caret包的predict函数对测试数据集进行数据预处理(和训练集的处理方式保持一致):缺失值填充数值变量最小最大缩放因子变量独热编码等
R语言使用caret包的predict函数对模型在测试集上的表现进行推理和预测predict函数对测试数据集进行数据预处理(和训练集的初始方式保持一致):缺失值填充数值变量最小最大缩放独热编码