如何在 Python 中对序列数据进行独热编码2025年3月17日 | 阅读 8 分钟 在本教程中,我们将学习如何将我们的输入或输出序列数据转换为独热编码,以用于序列分类。 独热编码是机器学习的一个有用特征,因为很少有机器学习算法可以直接处理类别数据。在处理数据集时,我们会遇到没有特定偏好顺序的列。 如果我们处理的是序列分类类型的问题,那么类别数据必须转换为数字。当我们使用深度学习方法(如长短期记忆循环神经网络)时,也会用到这种技术。 首先,我们将讨论类别数据。 什么是分类数据?类别数据是具有标签值而不是数值的变量类型。这些类型的变量也称为标称变量。让我们看下面的类别数据示例。
正如我们在上面的代码中所见,有些类别可能具有自然关系,例如自然顺序。在第三个示例中,“地点”变量的值具有自然顺序。 类别数据的问题一些机器学习算法可以直接处理类别数据。少数算法无法直接处理标签数据,因为它们要求所有数据变量和输出变量都是数值。 ![]() 因此,我们必须将层次数据转换为数值形式。假设类别变量是输出变量。在这种情况下,您可能还想将模型的预测转换回类别形式,以表示它们或在某些应用程序中使用它们。 如何将类别数据转换为数值数据有两种方法可以将类别数据转换为数值数据。
在下一节中,我们将讨论独热编码。 什么是独热编码?独热编码用于将类别变量转换为数值。在进行进一步的数据分析之前,会将类别值映射到整数值。每列包含“0”或“1”,对应于它所在的列。在此过程中,每个整数值都表示为一个二进制向量,该向量除索引为 1 的整数外,其余全为零。 独热编码示例让我们通过以下简单示例来理解它。 假设我们有一组值为“黄色”和“红色”的标签序列。要将它们转换为数值,我们将“黄色”分配为整数值 1,对应于列中存在的类别数量,将“红色”分配为 0。当我们遇到这些标签时,我们将分配相同的整数值。这称为整数编码。 让我们看另一个例子 - 假设有一个名为“动物”的类别,它有四个值 - 猫、狗、牛和骆驼。考虑下表,其中包含动物及其对应的类别值。 输入表 -
独热编码后将显示如下输出。
如果我们以向量形式表示上述输出,它将如下所示。 猫 - > [1, 0, 0, 0] 狗 - > [0, 1, 0, 0] 牛 - > [0, 0, 1, 0] 骆驼 - > [0, 0, 0, 1] 为什么要使用独热编码?独热编码的一个最佳优点是它能够使类别数据更具表现力。正如我们之前讨论过的,许多机器学习算法无法直接处理类别数据,因此需要将其转换为整数。 我们可以直接使用整数值,或者在需要的地方使用。它可以解决具有自然序数关系的类别之间的问题。例如 - 我们可以为“天气”标签分配整数值,如“冬季”、“夏季”和“季风”。 但是,如果没有找到序数关系,可能会出现问题。如果我们允许表示倾向或任何此类关系,可能会损害解决问题的学习能力。 手动独热编码在下面的示例中,我们将考虑一个字母字符串,该字符串将被转换为整数值。 现在,我们将对上述字符串值实现独热编码。让我们看下面的例子。 示例 - 输出 hello python [7, 4, 11, 11, 14, 26, 15, 24, 19, 7, 14, 13] [[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]] 说明 在上面的代码中,我们声明了输入字符串并打印了它。接下来,我们定义了所有可能的输入值集合。然后,创建了从字符值到整数值的映射。我们使用此映射对输入字符串进行编码。 正如我们在上面的输出中所见,第一个字母h被编码为 7。然后,此整数编码被转换为独热编码。一个整数一次编码一个字符。 每个字符都有特定的索引值,我们将该特定字符的索引标记为 1。第一个字符在 27 的二进制向量中表示为 7。我们将 h 的第 7 个索引标记为 1。 现在,我们将学习使用scikit-learn库实现独热编码。 使用 Scikit-learn 进行独热编码在此示例中,让我们假设有以下 3 个标签的输出序列。 一个具有 10 个时间步长的示例序列可能是。 我们使用整数值 1、2、3 对上述标签进行编码。在独热编码中,我们将使用具有 3 个值的二进制向量,例如 [1, 0, 0]。序列至少包含序列中一个可能值的一个示例。 我们将使用 scikit-learn 库。我们将使用其中的LabelEncoder模块来创建标签的整数编码,并使用OneHotEncoder来创建整数编码值的独热编码。 让我们理解下面的例子。 示例 - 输出 ['apple' 'apple' 'mango' 'apple' 'banana' 'banana' 'mango' 'apple'] [0 0 2 0 1 1 2 0] [[1. 0. 0.] [1. 0. 0.] [0. 0. 1.] [1. 0. 0.] [0. 1. 0.] [0. 1. 0.] [0. 0. 1.] [1. 0. 0.]] 解释 - 在上面的代码中,我们首先打印了标签序列。然后,我们执行了整数编码,最后是独热编码。OneHotEncoder 类返回组织良好的稀疏编码。但对于某些应用程序(如与 keras 库一起使用)来说,它效率不高。 使用 Keras 进行独热编码假设我们有一个已经整数编码的序列。我们可以直接处理整数编码,或者将整数编码映射到标签值。我们可以使用to_categorical()函数对整数数据进行独热编码。 在此示例中,我们有五个整数值 [0, 1, 2, 3, 4],并且有一个包含以下 15 个数字的输入序列。 让我们理解下面的例子。 示例 - 输出 [1 4 3 3 0 3 2 2 4 0 1 2 1 4 3] [[0. 1. 0. 0. 0.] [0. 0. 0. 0. 1.] [0. 0. 0. 1. 0.] [0. 0. 0. 1. 0.] [1. 0. 0. 0. 0.] [0. 0. 0. 1. 0.] [0. 0. 1. 0. 0.] [0. 0. 1. 0. 0.] [0. 0. 0. 0. 1.] [1. 0. 0. 0. 0.] [0. 1. 0. 0. 0.] [0. 0. 1. 0. 0.] [0. 1. 0. 0. 0.] [0. 0. 0. 0. 1.] [0. 0. 0. 1. 0.]] 1 解释 - 在上面的代码中,我们将整数编码编码为二进制向量并打印。然后,我们使用 Numpy 的argmax()函数来反转序列中第一个值的编码。 |
Python 列表推导式与生成器表达式 在本教程中,我们将讨论列表推导式和生成器表达式之间的一些重要区别。两者在语法上非常相似,但它们有一些显著的差异。让我们简要介绍一下列表推导式和生成器表达式。什么是列表推导式?列表...
阅读 4 分钟
Python 是最流行的***别编程语言之一。Python 为人工智能(TensorFlow、PyTorch)、机器学习(Pandas、NumPy、Matplotlib)和游戏开发(Pyglet、PyGame)等不同领域提供了庞大的库。我们也可以将 Python 视为新一代编程语言,因为它展示了它的...
阅读 48 分钟
在本教程中,我们将学习 Python 中的 currying,这是一个在 Python 中比较新的概念。大多数开发者可能不熟悉这个主题。我们将解释 currying 的概念、它的用例以及如何在 Python 中实现它。让我们开始……
阅读 6 分钟
在本教程中,我们将讨论 Python 程序如何仅接受包含所有元音的字符串。在以下示例中,我们传递一个字符串来检查是否包含所有元音。我们已考虑大小写元音...
阅读 4 分钟
Bokeh 是一个用于数据可视化的 Python 库。它使用 HTML 和 JavaScript 语言创建其绘图,并且它还针对现代网站浏览器,以提供优雅的演示、新颖图形的简洁构建以及良好的高性能交互性。在本教程中,我们将学习如何...
阅读 3 分钟
在本教程中,我们将讨论如何在 Python 中将元组转换为字典。我们知道元组的元素包含在括号中,字典的元素以键值对的形式存在并包含在...
阅读 4 分钟
:分步指南 Python 是世界上最流行的编程语言之一,以其简洁性、可读性和多功能性而闻名。无论您的编程知识水平如何,学习 Python 都可以扩展您的工作或副项目的选择。本文将为您提供...
阅读 4 分钟
(通常称为 regex 或 RegEx)是定义搜索模式的字符序列。它们用于匹配字符串中的模式,并对其执行各种操作,例如替换、提取或拆分。RegEx 是一个强大的文本处理工具,并且是...
阅读 6 分钟
本教程演示了如何利用科学计算中常用的流行 Python 库来计算 Python 中具有实变量的连续有界实函数的积分。由于本网站专注于计算,因此此处使用的积分计算方法主要是数值方法;特定的分析...
阅读 15 分钟
本教程将讨论如何在 Pandas DataFrame 中循环遍历行。如何使用 Pandas 在 Pandas DataFrame 中循环遍历行?Python 拥有一个出色的以数据为中心的 Python 模块环境,这使其成为执行数据分析的绝佳工具。其中一个工具是 Pandas,...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India