分类数据编码方法是什么?2025年1月7日 | 阅读10分钟 在数据科学和机器学习中,处理分类数据是一项常见的挑战。分类变量代表属性,例如颜色、类型或字体。然而,大多数机器学习算法需要数值输入,因此需要将分类数据转换为数值形式。这个过程称为编码,并且有许多方法可以优化这个过程。在本文中,将讨论各种分类数据编码方法及其应用。 什么是分类数据?分类记录是指表示定性属性或属性的数据类型。这些因素通常是多样的,并且可以分为类别或分组。分类事实描述了不具有统计意义的趋势或属性,例如颜色、物种或教育程度。 有两种主要的范围记录类型
分类数据在算术、生命科学和机器(设备)学习等领域发挥着重要作用。理解和研究分类数据可以帮助研究人员和专家根据定性属性进行探索、评估和做出明智的决策。此外,正确使用特定数据对于机器(设备)学习和其他应用程序的数据预处理至关重要,这些应用程序通常需要数值数据作为算法的输入。 解释分类数据编码方法分类数据编码方法是将分类变量转换为数值形式的技术,可以用作机器学习算法的输入。分类变量是代表属性的变量,例如颜色、性别或车辆类型。 不同的分类数据编码方法描述如下
独热编码独热编码是最流行的分类信息编码技术之一。它通过为原始变量中存在的每个类别创建二进制列来工作。例如,如果一个分类变量有 3 个类别(例如,红色、绿色、蓝色),独热编码将生成 3 个二进制列,其中每个类别由 1 或 0 表示。此方法可确保不假定类别之间存在顺序关系,使其适用于标称变量。 在独热编码中,原始变量的每个方格都被转换为二进制向量,其中只有一个位是“热”(1),而所有其他位都是“冷”(0)。其工作原理如下:
此框架可将每个类别正确地表示为一个单独的实体,从而可以相应地描述和管理机器学习过程。 让我们通过一个例子来说明:假设我们有一个名为“水果”的类别变量;它有 3 个观察值:苹果、芒果和葡萄。 提供的原始数据
独热编码后,这些数据将显示如下
每个类别现在都有自己的二进制列,值为 1 表示该类别存在于每个观察值中。 独热编码广泛用于机器学习任务,例如分类和聚类,其中需要将分类变量转换为数值形式以进行分析和模型训练。但是,概率信息是必需的,因为存在维度灾难。但是,在处理过程中,独热编码是机器学习应用程序中有效处理分类数据的强大工具。 在 Python 中实现独热编码 Python 提供了一个名为 category_encoders 的库,用于实现独热编码。可以使用 pip 命令进行安装 这是 Python 中独热编码器的详细工作流程 输出 Fruits 0 Apple 1 Banana 2 Pineapple 3 Grapes 4 Orange 5 Pomegranate 6 Watermelon 输出是原始数据帧。现在,使用 fit_transform() 方法,可以对数据进行编码。 输出 Fruits_Apple Fruits_Banana Fruits_Pineapple Fruits_Grapes Fruits_Orange Fruits_Promegenate Fruits_Watermelon 0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1 0.0 1.0 0.0 0.0 0.0 0.0 0.0 2 0.0 0.0 1.0 0.0 0.0 0.0 0.0 3 0.0 0.0 0.0 1.0 0.0 0.0 0.0 4 0.0 0.0 0.0 0.0 1.0 0.0 0.0 5 0.0 0.0 0.0 0.0 0.0 1.0 0.0 6 0.0 0.0 0.0 0.0 0.0 0.0 1.0 标签编码在标签编码中,每个变量类别都被赋予一个唯一的整数值。给定的整数通常是连续的,从零开始。此方法适用于具有自然顺序的序数变量,例如低、中和高。但是,在使用标签编码时必须小心,因为可能会暗示不存在的顺序关系。也称为序数编码器。 标签编码是一种数据预处理方法,用于处理分类变量的数量。与为每个类别拥有二进制列的独热编码不同,标签编码为每个变量类别分配唯一的整数值。 标签编码的工作原理如下。
标签编码主要用于表示具有自然顺序或类别之间差异的变量,称为序数记录。它有助于建立类别之间的序列关系,并以数学方式反转它们。 让我们通过一个例子来说明:假设有一个名为“班级”的类别变量,包含三个类别:第一、第二和第三。 原始数据
标签编码后,数据将显示如下
在这里,每个类别都被更改为一个唯一的标签。“First”类表示为零,“Second”表示为 1,“Third”表示为 2。 标签编码简单高效,适合机器学习任务中的序数变量。但是,在使用标签编码处理没有自然顺序的标称变量时需要谨慎,因为这可能会导致在这些情况下不存在的顺序关系,此时独热编码或其他编码策略可能更合适。 在 Python 中实现标签编码器 输出 Fruits 0 Apple 1 Banana 2 Orange 3 Pineapple 4 Apple 5 Grapes 6 Watermelon 7 Banana 8 Orange 9 Pineapple 10 Pomegranate 11 Watermelon 这是由不同水果组成的数据帧。使用 OrdinalEncoder() 函数将这些水果名称映射到一个值。fit_transform() 函数用于使用标签编码器对数据进行编码。 输出 Fruits 0 1 1 2 2 3 3 6 4 1 5 4 6 5 7 2 8 3 9 6 10 7 11 5 这里,输出是标签编码的数据,其中包含每个类别的不同标签。 虚拟编码虚拟编码,也称为二进制编码或 one-of-k 编码,是一种数据预处理方法,用于将分类变量转换为适合机器学习算法的数学形式。它与独热编码相似,但在创建二进制列时,虚拟编码有所不同。 在虚拟编码中,对于具有 n 个不同类别的分类变量,将生成 n-1 个二进制列。每个二进制列代表一个类别,除了一个参考类别,当所有二进制列都为空时,该类别将被明确表示。这种方法有助于避免在使用单热编码时出现的复共线性问题,尤其是在线性回归模型中。 虚拟编码的工作原理如下。
可以使用一个例子来解释虚拟编码的工作原理。假设有一个名为“地区”的分类变量,有四个类别:北方、南方、东方和西方。 提供的原始数据
虚拟编码后,数据将显示如下
这里有三个二进制列,每个列代表一个类别(“北方”、“南方”、“东方”和“西方”)。“北方”类别充当参考类别,因此如果所有二进制列都为空,则表示该实例属于“北方”类别。 虚拟编码广泛用于各种机器学习任务,尤其是在处理多类特定变量时。它在避免独热编码中出现的一些线性问题时,提供了对分类数据的紧凑表示。但是,至关重要的是要关注参考类别的选择及其对模型解释的影响。 在 Python 中实现虚拟编码输出 Fruits 0 Apple 1 Banana 2 Orange 3 Pineapple 4 Apple 5 Grapes 6 Watermelon 7 Banana 8 Orange 9 Pineapple 10 Pomegranate 11 Watermelon 这是由不同水果组成的数据帧。get_dummies() 函数用于使用虚拟编码器对数据进行编码,该编码器在输出时为每个类别创建虚拟变量。 Fruits_Banana Fruits_Grapes Fruits_Orange Fruits_Pineapple Fruits_Pomegranate 0 0 0 0 0 0 1 1 0 0 0 0 2 0 0 1 0 0 3 0 0 0 1 0 4 0 0 0 0 0 5 0 1 0 0 0 6 0 0 0 0 0 7 1 0 0 0 0 8 0 0 1 0 0 9 0 0 0 1 0 10 0 0 0 0 1 11 0 0 0 0 0 还有一些不同的编码技术,例如
频率编码使用类别在数据集中出现的频率来替换类别。每个类别都映射到其对应的频率价格,表明基于事件的重要性。此技术可用于捕捉数据集中稀有或不常见组的重要性。
目标编码,也称为均值编码,包括将每个类别更改为该类别中目标变量的均值(例如,因变量的平均值)。此方法对于分类任务尤其有效,因为它衡量了类别之间变量与目标变量之间的相关性。但是,如果不加以小心或数据集较小,可能会发生过拟合。
哈希编码是一种将哈希运算应用于映射到多个维度的分类变量的方法。此方法在处理高基数平方变量时可能有用,因为它减少了内存消耗和计算复杂性。但是,它可能导致不一致,即不同的类别映射到相同的哈希价格。 这些编码技术各有优缺点,选择哪种方法取决于诸如分类变量的性质、使用的机器学习算法以及项目的具体要求等因素。通过实验和仔细考虑,才能为给定的数据集和问题域选择最合适的编码方法。 除了上述编码策略外,还有一些额外的策略可能有助于在机器学习任务中使用特定数据
结论特定数据编码方法在为机器学习算法准备数据方面发挥着至关重要的作用。编码技术的需求取决于各种因素,包括特定变量的性质、正在使用的集合规则以及项目的具体要求。通过正确理解和应用这些编码策略,数据科学家可以在其设备学习工作流程中有效地利用特定数据,从而实现更准确、更可靠的模型。 下一主题伯努利试验和二项分布 |
我们请求您订阅我们的新闻通讯以获取最新更新。