我有一个具有非序数分类特征的数据集。在训练机器学习模型(线性 SVC)之前,转换它们(编码 + 缩放)的最佳方法是什么?
我尝试过的事情:
标签编码 - 这有效。但是缩放没有意义,因为特征中的不同类别没有任何特定的顺序。
One-Hot 编码 - 特征中有数千个独特的类别,这通过创建数千个列而使 ML 模型变得复杂。
计数编码 - 我的训练-测试分割没有训练集中某个特征的所有独特类别,当我对这些特征进行计数编码时,这会在测试集中引入 NaN。
要解决测试集中有一些训练集中没有的唯一值的问题,您可以尝试执行以下操作:
df = train.append(test)
train = df.head(len(train))
test = df.tail(len(test))
根据我的经验,我可以说 LabelEncoding 和 OneHotEncoding 是编码非序数特征的最佳技术。