我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python如何实现类别变量的独热编码

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python如何实现类别变量的独热编码

这篇文章主要介绍“Python如何实现类别变量的独热编码”,在日常操作中,相信很多人在Python如何实现类别变量的独热编码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python如何实现类别变量的独热编码”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

在数据处理与分析领域,对数值型与字符型类别变量加以编码是不可或缺的预处理操作;这里介绍两种不同的方法。

1 OneHotEncoder

首先导入必要的模块。

import pandas as pdfrom sklearn.preprocessing import OneHotEncoder

其中,OneHotEncoder是我们实现独热编码的关键模块。

接下来,导入并显示数据前五行。

test_data_1=pd.read_csv('G:/CropYield/03_DL/00_Data/onehot_test.csv',names=['EVI0610','EVI0626','SoilType'],header=0)test_data_1.head(5)

关于这里导入数据代码的解释,大家可以查看多变量两两相互关系联合分布图的Python绘制与Python TensorFlow深度学习回归代码:DNNRegressor这两篇文章,这里就不再赘述啦~

数据前五行展示如下图。其中,前两列'EVI0610''EVI0626'为数值型连续变量,而'SoilType'为数值型类别变量。我们要做的,也就是将第三列'SoilType'进行独热编码。

Python如何实现类别变量的独热编码

接下来,进行独热编码的配置。

ohe=OneHotEncoder(handle_unknown='ignore')ohe.fit(test_data_1)

在这里,第一行是对独热编码的配置,第二行则是对我们刚刚导入的数据进行独热编码处理。得到一个独热编码配置的输出结果。

Python如何实现类别变量的独热编码

接下来,看看独热编码处理后,将我们的数据分成了哪些类别。

ohe.categories_

得到结果如下图。

Python如何实现类别变量的独热编码

可以发现,一共有三个array,为什么呢?仔细看可以发现,独热编码是将我们导入的三列数据全部都当作类别变量来处理了。之所以会这样,是因为我们在一开始没有表明哪一列是类别变量,需要进行独热编码;而哪一列不是类别变量,从而不需要进行独热编码。

那么,我们如何实现上述需求,告诉程序我们要对哪一行进行独热编码呢?在老版本的sklearn中,我们可以借助categorical_features=[x]参数来实现这一功能,但是新版本sklearn取消了这一参数。那么此时,一方面,我们可以借助ColumnTransformer来实现这一过程,另一方面,我们可以直接对需要进行转换的列加以处理。后者相对较为容易理解,因此本文对后者进行讲解。

我们将test_data_1中的'SoilType'列作为索引,从而仅仅对该列数据加以独热编码。

ohe_column=pd.DataFrame(ohe.fit_transform(test_data_1[['SoilType']]).toarray())ohe_column.head(5)

其中,[['SoilType']]表示仅仅对这一列进行处理。得到结果如下图。

Python如何实现类别变量的独热编码

可以看到,原来的'SoilType'列现在成为了63列的编码列,那么这样的话,说明我们原先的'SoilType'应该一共是有63个不同的数值。是不是这个样子呢?我们来检查一下。

count=pd.DataFrame(test_data_1['SoilType'].value_counts())print(count)

得到结果如下。

Python如何实现类别变量的独热编码

好的,没有问题:可以看到此结果共有63行,也就是'SoilType'列原本是有63个不同的值的,证明我们的独热编码没有出错。

此时看一下我们的test_data_1数据目前长什么样子。

test_data_1.head(5)

Python如何实现类别变量的独热编码

是的,我们仅仅对'SoilType'列做了处理,没有影响到整个初始数据。那么先将原本的'SoilType'列剔除掉。

test_data_1=test_data_1.drop(['SoilType'],axis=1)test_data_1.head(5)

Python如何实现类别变量的独热编码

再将经过独热编码处理后的63列加上。

test_data_1.join(ohe_column)

Python如何实现类别变量的独热编码

大功告成!

但是这里还有一个问题,我们经过独热编码所得的列名称是以数字来命名的,非常不方便。因此,有没有什么办法可以在独热编码进行的同时,自动对新生成的列加以重命名呢?

2 pd.get_dummies

pd.get_dummies是一个最好的办法!其具体用法与上述OneHotEncoder类似,因此具体过程就不再赘述啦,大家看代码就可以明白。

首先还是导入与上述内容中一致的初始数据。

test_data_2=pd.read_csv('G:/CropYield/03_DL/00_Data/onehot_test.csv',names=['EVI0610','EVI0626','SoilType'],header=0)test_data_2.head(5)

Python如何实现类别变量的独热编码

进行独热编码并看看结果。

test_data_2_ohe=pd.get_dummies(test_data_2,columns=['SoilType'])test_data_2_ohe.head(5)

Python如何实现类别变量的独热编码

最终结果中,列名称可以说是非常醒目,同时,共有65列数据,自动删除了原本的'SoilType'列,实现了“独热编码”“新列重命名”与“原始列删除”,可谓一举三得,简直是太方便啦~

到此,关于“Python如何实现类别变量的独热编码”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python如何实现类别变量的独热编码

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python如何实现类别变量的独热编码

这篇文章主要介绍“Python如何实现类别变量的独热编码”,在日常操作中,相信很多人在Python如何实现类别变量的独热编码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python如何实现类别变量的独热编码
2023-07-05

Python实现类别变量的独热编码

这篇文章主要为大家详细介绍了基于Python下OneHotEncoder与pd.get_dummies两种方法,实现机器学习中最优的编码方法——独热编码的方法,需要的可以参考一下
2023-02-17

python如何实现变量的交换

小编给大家分享一下python如何实现变量的交换,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!变量的交换a = 1 b = 2 如果我们需要交换a 和 b中的
2023-06-27

Python如何实现自动识别并批量转换文本文件编码

这篇“Python如何实现自动识别并批量转换文本文件编码”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python如何实现自
2023-07-05

python如何实现变量的多重分配

这篇文章将为大家详细讲解有关python如何实现变量的多重分配,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。变量的多重分配Python允许我们在一行中为多个变量分配值。 可以使用逗号分隔变量。 一线多任务
2023-06-27

如何使用php代码实现两个变量值的互换

可以使用一个临时变量来实现两个变量值的互换。具体步骤如下:1. 定义两个变量并赋予初始值。2. 创建一个临时变量,并将其中一个变量的值赋给临时变量。3. 将另一个变量的值赋给第一个变量。4. 最后,将临时变量的值赋给第二个变量。以下是使用P
2023-09-04

如何实现批量转换目录下文件编码的shell脚本

这篇文章将为大家详细讲解有关如何实现批量转换目录下文件编码的shell脚本,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一例批量转换目录下文件编码的shell脚本代码。需求描述:由于从window转lin
2023-06-09

PHP7中的标量类型声明:如何避免类型错误和严谨代码的实现?

PHP7中的标量类型声明:如何避免类型错误和严谨代码的实现?引言:PHP7是PHP语言的一个重要版本更新,其中新增了标量类型声明的特性。标量类型声明可以帮助开发者避免在使用函数或方法时传递错误的参数类型,从而提高代码的可靠性和可读性。本文将
2023-10-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录