对python 数据处理中的LabelEncoder 和 OneHotEncoder详解

对Python数据处理中的LabelEncoder和OneHotEncoder详解

在Python中进行数据处理时,经常需要对文本类型的变量进行编码处理,以便于算法模型能够识别。其中,LabelEncoder和OneHotEncoder是两种常用的编码方式。下面详细讲解这两种编码方式的使用方法和区别。

1. LabelEncoder

LabelEncoder属于序号编码,即将类别型变量的不同取值赋以序号标签,将文本转换为数字,使得算法模型能够进行计算。我们可以使用sklearn中的LabelEncoder函数进行编码。下面是LabelEncoder函数的使用方法:

# 导入模块
from sklearn.preprocessing import LabelEncoder

# 创建LabelEncoder对象
le = LabelEncoder()

# 对文本类型数据进行编码
le.fit_transform(["男", "女", "女", "男"])

输出结果:

array([1, 0, 0, 1])

可以看到,LabelEncoder将"男"编码为1,"女"编码为0,对于相同的文本值进行编码后得到相同的数字。

2. OneHotEncoder

OneHotEncoder又称为独热编码,是一种将分类变量用于数值计算的编码方式。首先将每个分类变量的取值转换为一个二元变量,然后将每个二元变量赋予一个0或1的值,表示该变量是否存在。我们可以使用sklearn中的OneHotEncoder函数进行编码。下面是OneHotEncoder函数的使用方法:

# 导入模块
from sklearn.preprocessing import OneHotEncoder

# 创建OneHotEncoder对象
ohe = OneHotEncoder(sparse=False)

# 对文本类型数据进行编码(需要先进行LabelEncoder)
le = LabelEncoder()
gender = le.fit_transform(["男", "女", "女", "男"])
ohe.fit_transform(gender.reshape(-1, 1))

输出结果:

array([[0., 1.],
       [1., 0.],
       [1., 0.],
       [0., 1.]])

可以看到,OneHotEncoder将"男"编码为[0, 1],"女"编码为[1, 0],对于相同的文本值进行编码后得到不同的数字组合。这样,我们就可以将经过OneHotEncoder编码处理后的数据作为算法模型的输入。

3. 示例说明

下面通过示例说明LabelEncoder和OneHotEncoder的应用。

示例1:LabelEncoder

假设我们要对一个鸢尾花数据集中的类别列Species进行LabelEncoder编码,以便于使用算法模型对其进行训练。

# 导入模块和数据集
from sklearn.datasets import load_iris
from sklearn.preprocessing import LabelEncoder

# 加载iris数据集
iris = load_iris()

# 打印数据集前5条数据
print(iris.data[:5])
print(iris.target[:5])

# 创建LabelEncoder对象
le = LabelEncoder()
# 对Species列进行编码
iris_target_encoded = le.fit_transform(iris.target)

# 查看编码结果
print(iris_target_encoded[:5])

输出结果:

[[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 [4.7 3.2 1.3 0.2]
 [4.6 3.1 1.5 0.2]
 [5.  3.6 1.4 0.2]]
[0 0 0 0 0]
[0 0 0 0 0]

可以看到,我们使用LabelEncoder将鸢尾花数据集中的类别列进行了编码处理。

示例2:OneHotEncoder

假设我们要对一个蘑菇数据集中的类别列cap-shape进行OneHotEncoder编码,以便于使用算法模型对其进行训练。

# 导入模块和数据集
import pandas as pd
from sklearn.preprocessing import LabelEncoder, OneHotEncoder

# 加载mushrooms数据集
df = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/mushroom/agaricus-lepiota.data", header=None)

# 打印数据集前5条数据
print(df.head())

# 对第5列进行LabelEncoder编码
le = LabelEncoder()
df[5] = le.fit_transform(df[5])

# 对第5列进行OneHotEncoder编码
ohe = OneHotEncoder(sparse=False)
df_ohe = ohe.fit_transform(df[5].values.reshape(-1, 1))

# 查看编码结果
print(df_ohe[:5])

输出结果:

   0  1  2  3  4  5  6  7  8  9   ... 13 14 15 16 17 18 19 20 21 22
0  p  x  s  n  t  p  f  c  n  k  ...  s  w  w  p  w  o  p  k  s  u
1  e  x  s  y  t  a  f  c  b  k  ...  s  w  w  p  w  o  p  n  n  g
2  e  b  s  w  t  l  f  c  b  n  ...  s  w  w  p  w  o  p  n  n  m
3  p  x  y  w  t  p  f  c  n  n  ...  s  w  w  p  w  o  p  k  s  u
4  e  x  s  g  f  n  f  w  b  k  ...  s  w  w  p  w  o  e  n  a  g

[5 rows x 23 columns]
[[0. 1. 0. 0. 0. 0. 0.]]

可以看到,我们使用OneHotEncoder对蘑菇数据集中的cap-shape列进行了编码处理,得到了包含7个数字的编码结果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:对python 数据处理中的LabelEncoder 和 OneHotEncoder详解 - Python技术站

(1)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • 在SAE(Sina App Engine)上部署WordPress站点的教程

    以下是在SAE上部署WordPress站点的教程: 准备工作 注册SAE账号:访问 SAE官网,注册账号并创建一个应用。 下载WordPress:访问 WordPress官网,下载最新版本的WordPress。 安装FTP客户端:推荐使用FileZilla,下载地址:https://filezilla-project.org/。 部署过程 将WordPres…

    云计算 2023年5月17日
    00
  • Prometheus 监控系统1

    一、Prometheus 概述 1.1简介 Prometheus 是一个开源的服务监控系统和时序数据库,其提供了通用的数据模型和快捷数据采集、存储和查询接口。它的核心组件 Prometheus server 会定期从静态配置的监控目标或者基于服务发现自动配置的目标中进行拉取数据,新拉取到的数据会持久化到存储设备当中。 每个被监控的主机都可以通过专用的 exp…

    云计算 2023年4月18日
    00
  • [下载]微软发布Office 2016 for Mac预览版 内附下载

    下载微软发布Office 2016 for Mac预览版攻略 微软发布了Office 2016 for Mac预览版,这是一款专为Mac用户打造的办公软件,包括Word、Excel、PowerPoint、Outlook等多个应用程序。下面是一份关于如何下载微软发布Office 2016 for Mac预览版的完整攻略,包括背景介绍、下载步骤、示例说明等。 1…

    云计算 2023年5月16日
    00
  • Next.js 在 Serverless 中从踩坑到破茧重生

    作者 杨苏博,偏后端的全栈开发,目前负责腾云扣钉的 Cloud Studio 产品。在团队中负责接技术架构设计与 Review、Cloud Studio 编辑器内核设计与开发、部分核心插件设计与开发;对 WebIDE 领域中的 VS Code 和 Theia IDE 有深入研究与丰富实践;多年 Serverless 领域从业经验,是 Serverless F…

    2023年4月9日
    00
  • PHP抓取、分析国内视频网站的视频信息工具类

    让我来详细讲解一下“PHP抓取、分析国内视频网站的视频信息工具类”的完整攻略。 简介 这里介绍的是使用PHP编写的工具类,可以用于抓取、分析国内视频网站的视频信息。本工具类在PHP版本5.x以上均可使用,可以较快地抓取各大视频网站上的视频信息,包括视频的标题、视频的封面、视频的播放地址等。 安装 为了使用本工具类,您首先需要将源代码进行下载,保存到本地。然后…

    云计算 2023年5月17日
    00
  • 云计算对软件工程的影响

    云计算对软件工程的影响   云计算在今天这个时代不再是研究人员忽悠经费的工具,也不再是媒体争相吹捧的噱头,它的应用之广泛,已经从最基础的数据存储,电子邮箱过渡到商务合作,虚拟办公等领域。云计算使得用户体验变得丰富,想要什么直接获取。但用户体验得流畅是由软件人付出的巨大努力来完成的。但不论如何,任何物联网都涉及到多部门、多领域、多产业、多地域,云计算的应用场景…

    云计算 2023年4月11日
    00
  • 阿里大数据工程师面试流程与经验总结

    阿里大数据工程师面试流程与经验总结 面试流程 阿里大数据工程师面试流程主要分为三个环节:在线笔试、电话面试以及现场面试。 在线笔试 在线笔试主要考察应聘者的算法和数据结构基础。需要掌握的内容包括但不限于二叉树、链表、栈和队列、排序算法、查找算法等。 在笔试中,需要结合具体问题,使用算法和数据结构进行问题求解。 电话面试 电话面试为技术面试环节,需要候选人准备…

    云计算 2023年5月18日
    00
  • 大数据分析用java还是Python

    大数据分析是当前热门的领域之一,它需要快速高效地处理和分析大量数据,为企业决策提供支持。而Java和Python是两个最常用的编程语言之一,都具备处理大数据的能力。在选择使用Java或Python进行大数据分析时,需考虑以下几个方面: 使用场景 Java和Python在不同的使用场景下有着各自的优势。Java在处理海量数据时速度较快,特别适用于分布式和高性能…

    云计算 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部