趋近智
在应用任何编码技术之前,弄清分类特征本身具有不同形式是很重要的。概括来说,我们可以将它们分为两种主要类型:标称类别和序数类别。认识到这种区别是根本的,因为最佳编码策略通常取决于您正在处理的分类数据类型。使用不恰当的编码方法可能会向数据集中引入误导性信息,或者未能获取特征中包含的有价值的结构信息。
标称类别表示不同的组或标签,其值之间不存在固有的顺序或排名。可以将它们视为定性分类。例如:
对标称特征而言,对类别进行任何数值分配都纯粹是任意的。将 1 赋值给“红色”,将 2 赋值给“绿色”,将 3 赋值给“蓝色”,并不意味着蓝色“大于”绿色,也不意味着红色和绿色之间的差异与绿色和蓝色之间的差异相同。机器学习 (machine learning)算法,特别是线性模型或基于距离的算法(如 k-最近邻),可能会误解此类数值分配,假设原始数据中根本不存在的顺序或量级差异。这可能导致不正确的假设,并可能降低模型性能。
另一方面,序数类别在其值之间具有有意义的顺序或排名,但连续类别之间的差异大小不一定已知、统一或可量化 (quantization)。顺序很重要,但对类别进行算术运算通常没有意义。例如:
在这里,我们知道“硕士”高于“学士”,“满意”代表比“中立”更好的结果。然而,我们通常不能假设“高中”和“学士”之间的“差距”与“硕士”和“博士”之间的差距相同。为这些级别分配 1, 2, 3, 4 等数值可以捕获顺序,这对于某些模型来说是宝贵的信息。然而,仍需保持谨慎,因为模型可能会按字面意思解释数值差异(例如,假设级别 1 和 2 之间的差异与级别 3 和 4 之间的差异完全相同)。
弄清特征是标称的还是序数的,直接影响您选择编码策略:
['USA', 'Canada', 'Mexico'] 编码为 [1, 2, 3] 可能会导致线性模型错误地推断墨西哥具有美国所代表的某种属性的三倍。feature <= 2)进行分割。然而,线性模型、支持向量 (vector)机和神经网络 (neural network)对数值尺度以及编码值之间隐含的关系更敏感。确定分类特征是标称的还是序数的,有助于选择合适的编码技术。
确定类型通常需要检查特征的唯一值,并运用关于这些值所代表内容的领域知识。是否存在逻辑上的进展或层级关系?如果是,则很可能是序数类别;否则,就是标称类别。
考虑到这一区别,以下部分将介绍具体的编码技术,讨论它们最适合哪种数据类型,并使用常见的 Python 库演示它们的实现。我们将从通常用于标称数据的方法开始,然后介绍可以处理序数关系或解决高基数等问题的方法。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•