Python 中的标签编码2025年3月17日 | 阅读 8 分钟 简介在开始学习类别变量编码之前,让我们先了解数据类型及其量表的. 学习者理解这些主题对于进行类别变量编码工作至关重要。众所周知,数据是一种特殊类型的信息,通常以特定格式呈现。我们可以将数据分为三种类型:结构化数据、半结构化数据和非结构化数据。 以矩阵形式(行和列)表示的数据称为结构化数据。这些数据可以存储为 SQL 数据库中的表,Excel 表格中的行和列,或 CSV 文件中用分隔符分隔的数据。 不以矩阵形式存在的数据称为半结构化数据和非结构化数据。我们通常可以将半结构化数据存储在 XML 文件、JSON 格式以及更多格式中,而非结构化数据则以图像、电子邮件、视频、日志数据和文本数据的形式存在。 让我们考虑一个基于 机器学习或数据科学 的业务问题。如果我们只处理结构化数据,并且收集的数据是连续变量和类别变量的组合,那么大多数 机器学习 算法将无法理解或无法处理类别变量。 这句话意味着,当数据以数值形式而不是类别形式输入模型进行训练和测试时,机器学习算法在准确性和其他性能指标方面表现会更好。 因此,在使用类别数据拟合和评估模型之前,必须将其编码为数字。 某些机器学习算法,例如基于树的算法(如决策树、随机森林),在处理类别变量方面表现更好。在与 数据科学 相关的任何项目中,将类别数据转换为数值数据都是最佳实践。 既然目标明确,在开始构建任何统计模型、深度学习模型或机器学习模型并开始编码或将类别数据转换为数值形式之前,让我们先了解几种类别的类型。 理解名义量表名义量表 定义为仅用于命名的变量。它们用于标记变量。名义量表之间从不重叠,并且没有任何数值意义。 注意:名义量表仅指那些仅用于命名的变量。以下是一些代表名义量表数据的示例。一旦我们收集到数据,我们通常需要分配一个代表名义变量的数值代码。
例如,对于类别变量“某人居住在哪座城市?”,我们可以将德里分配数值代码 1,将孟买分配 2,将金奈分配 3,将班加罗尔分配 4。 重要提示: 分配的数值不具有任何附加的数学值。 上述陈述意味着基本的数学运算,如除法、乘法、减法或加法是无意义的。因此,像德里/孟买或金奈+班加罗尔这样的运算毫无意义。 理解顺序量表顺序量表 指的是数据值存储在有序集合中的变量。例如,数据使用李克特量表表示有限的客户反馈调查,如下表所示。 客户反馈:5 点李克特量表
在上例中,我们使用五点李克特量表收集了反馈数据。我们将“非常差”分配数值代码 1,“差”分配 2,“满意”分配 3,“好”分配 4,“非常好”分配 5。我们还可以观察到 5 比 4 好,比 3 好得多。但是,如果我们从“满意”中减去“非常好”,就没有意义了。 我们已经知道,大多数机器学习算法只能处理数值。这就是将类别特征编码为模型兼容表示的原因。 因此,有几种著名的编码方法可用,包括:
但是,在本教程中,我们将只介绍标签编码。 理解标签编码在 Python 标签编码中,我们需要用一个介于零和类别总数减一之间的数值来替换类别值。例如,如果类别变量的值有六个不同的类别,我们将使用 0、1、2、3、4 和 5。 现在,让我们以印度各州 COVID-19 病例数据为例来理解标签编码。观察以下数据框时,我们会发现“State”列包含不是机器友好的类别值。其他列包含数值。现在,让我们尝试对“State”列进行标签编码。 印度各州 COVID-19 病例
正如我们所观察到的,在执行标签编码后,我们将数值分配给了每一个类别值。有些人可能会想,为什么编号是无序的(自上而下)。原因是我们将数字按字母顺序分配,这意味着德里分配给 0,古吉拉特邦分配给 1,卡纳塔克邦分配给 2,依此类推。
使用 Python 进行标签编码Python 的 sklearn 库为用户提供了预定义的函数,用于在数据集上进行标签编码。 语法 正如我们所观察到的,我们创建了 LabelEncoder 类的对象,然后使用该对象将标签编码应用于数据。 主要有两种方法可以进行标签编码:
使用 scikit-learn 库进行标签编码让我们开始标签编码过程。数据集编码的第一步是拥有一个数据集。 因此,我们在此创建了一个简单的数据集。 示例:创建数据集 正如我们所观察到的,我们创建了一个名为 'data' 的字典,并使用 pandas 的 DataFrame() 函数将其转换为 Data Frame。 输出 Geniune Data Frame: Gender Name 0 F Cindy 1 M Carl 2 M Johnny 3 F Stacey 4 M Andy 5 F Sara 6 M Victor 7 F Martha 8 F Mindy 9 M Max 从上述数据集中,我们可以看到我们有一个名为“Gender”的变量,其标签分别为“F”和“M”。 接下来,让我们尝试导入 LabelEncoder 类。然后,我们将该类应用于数据集的 'Gender' 变量。 示例 输出 Geniune Data Frame: Gender Name 0 F Cindy 1 M Carl 2 M Johnny 3 F Stacey 4 M Andy 5 F Sara 6 M Victor 7 F Martha 8 F Mindy 9 M Max [0 1] Data Frame after Label Encoding: Gender Name 0 0 Cindy 1 1 Carl 2 1 Johnny 3 0 Stacey 4 1 Andy 5 0 Sara 6 1 Victor 7 0 Martha 8 0 Mindy 9 1 Max 说明 在上面的示例中,我们导入了 pandas 和 scikit-learn 库的 preprocessing 模块。然后,我们定义了字典形式的数据,并打印了数据框以供参考。 之后,我们使用 fit_transform() 方法将由对象指向的标签编码器功能添加到数据变量中。我们打印了“Gender”的唯一代码以及执行标签编码后的最终 Data Frame。 接下来,让我们讨论另一种标签编码方法,即通过类别代码。 使用类别代码进行标签编码在我们深入了解使用类别代码进行标签编码的过程之前,让我们检查一下数据集中变量的数据类型。 我们可以使用 dtypes 函数检查数据类型,如下所示。 输出 Gender object Name object dtype: object 检查完“Gender”变量的数据类型后,我们将将其转换并转换为类别类型。 这可以在以下代码片段中看到。 输出 Gender category Name object dtype: object 现在,让我们尝试使用 pandas.DataFrame.cat.codes 函数将标签转换为整数类型。以下是基于使用类别代码进行标签编码的完整示例。 示例 输出 Genuine Data Frame: Gender Name 0 F Cindy 1 M Carl 2 M Johnny 3 F Stacey 4 M Andy 5 F Sara 6 M Victor 7 F Martha 8 F Mindy 9 M Max Data Frame after Label Encoding using Category codes: Gender Name 0 0 Cindy 1 1 Carl 2 1 Johnny 3 0 Stacey 4 1 Andy 5 0 Sara 6 1 Victor 7 0 Martha 8 0 Mindy 9 1 Max 说明 在上面的示例中,我们导入了 pandas 库并定义了字典形式的数据。然后,我们打印了原始数据框以供参考。之后,我们将“Gender”变量的数据类型转换为类别,并使用 pandas.DataFrame.cat.codes 函数将其转换为类别代码。最后,我们打印了使用类别代码进行标签编码后的结果。 |
| 获取城市天气报告 在本教程中,我们将使用 Django 创建一个天气应用程序;此应用程序将显示所搜索城市的天气。这是一个简单的 Django 项目,可帮助初学者理解 Django 的基本概念。我们还将...
7 分钟阅读
在本教程中,我们将讨论如何使用 uuid 模块在 Python 中生成 UUID。在深入探讨此主题之前,让我们了解 UUID 的基本概念。简介 UUID 是通用唯一标识符的缩写名称,也称为 GUID,即全局唯一标识符….
阅读 8 分钟
Pandas 是一个功能强大的 Python 库,为处理表格数据提供了易于使用的数据操作工具。它构建在 NumPy 包之上,并为数据分析提供了高级接口。数据分析中最常见的任务之一是读取...
7 分钟阅读
? 在本文中,我们将讨论如何交换字符串中的两个字符。有多种方法可以帮助理解我们如何交换字符串中的两个字符。方法一:使用 list() 和 join() 方法 如果我们想交换字符串中的两个字符...
阅读 3 分钟
学习机器学习和人工智能的课题并不容易。在本教程中,我们将能够获得许多关于用 Python 编写的人工智能项目的想法。为什么人工智能需求量大?人工智能开始...
5 分钟阅读
简介:在静态射击游戏《太空入侵者》中,用户在屏幕底部滑动激光,向他们上方的外星人射击。当外星人接近屏幕边缘时,它们会向下移动,并成群移动...
阅读20分钟
有数百种用于检验假设的统计检验。然而,机器学习项目只需要其中少数几种。在本教程中,我们将看到一些最重要的假设检验,如果想从事......工作,就必须知道。
14 分钟阅读
在本教程中,我们将学习 Python 中的向量化。如今的系统需要处理大量数据。与 C/C++ 等其他语言相比,Python 处理大型数据集的速度较慢。因此,我们需要一种向量化技术。让我们了解更多...
阅读 8 分钟
名片仍然是各种专业场合中进行人际交往和交换联系信息的重要工具。然而,手动处理和整理各种名片中的信息可能耗时且容易出错。为了克服这些挑战,我们将探讨...
7 分钟阅读
本文将介绍将给定矩阵元素顺时针旋转的代码。为了可视化这个问题,让我们先看一些矩阵旋转的例子。矩阵旋转示例:对于 3 * 3 矩阵输入 1 4 7 2 ...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India