python对离散变量的one-hot编码方法


Posted in Python onJuly 11, 2018

我们在进行建模时,变量中经常会有一些变量为离散型变量,例如性别。这些变量我们一般无法直接放到模型中去训练模型。因此在使用之前,我们往往会对此类变量进行处理。一般是对离散变量进行one-hot编码。下面具体介绍通过python对离散变量进行one-hot的方法。

注意:这里提供两种哑编码的实现方法,pandas和sklearn。它们最大的区别是,pandas默认只处理字符串类别变量,sklearn默认只处理数值型类别变量(需要先 LabelEncoder )

① pd.get_dummies(prefix=)

pandas的get_dummies()可以直接对变量进行one-hot编码,其中prefix是为one-hot编码后的变量进行命名。

②LabelEncoder和OneHotEncoder

我们也可以通过sklearn的模块实现对离散变量的one-hot编码,其中LabelEncoder是将离散变量替换为数字,

OneHotEncoder则实现对替换为数字的离散变量进行one-hot编码。

注:get_dummies()可以直接对字符型变量进行one-hot编码,但OneHotEncoder不能直接对字符型变量编码,因此我们需要先将字符型变量转换为数值型变量。这就是为什么在OneHotEncoder之前需要LabelEncoder的原因。

下面我们通过实例来介绍这两种方法的具体使用:

①数据的导入

import pandas as pd
import os
os.getcwd() 
os.chdir('E:\study\kaggle\Titanic')
from sklearn.preprocessing import OneHotEncoder 
from sklearn.preprocessing import LabelEncoder 
data = pd.read_csv('train.csv')

②数据熟悉

data['Sex'].value_counts()
Out[38]: 
male  577
female 314
Name: Sex, dtype: int64 #可以看到,变量Sex为字符型变量,取值有male和female两种

③get_dummies

Sex_ohe_1 = pd.get_dummies(data['Sex'])
Sex_ohe_1.head()
Out[40]: 
 female male
0  0  1
1  1  0
2  1  0
3  1  0
4  0  1

④OneHotEncoder

Sex_ohe_2 = OneHotEncoder(sparse=False).fit_transform(data['Sex'].reshape((-1,1))) 
 
ValueError: could not convert string to float: male

可以看到OneHotEncoder无法直接对字符型变量进行编码,需要通过OneHotEncoder将字符型变量转换为数值型变量。

le_sex=LabelEncoder().fit(data['Sex']) 
Sex_label=le_sex.transform(data['Sex']) 
Sex_label= LabelEncoder().fit_transform(data['Sex']) #fit_transform等价于fit和transform两个函数结合
ohe_sex=OneHotEncoder(sparse=False).fit(Sex_label.reshape(-1,1)) 
Sex_ohe=ohe_sex.transform(Sex_label.reshape(-1,1)) 
Sex_ohe_3 = OneHotEncoder(sparse=False).fit_transform(Sex_label.reshape((-1,1)))

注:get_dummies返回的为数据框,OneHotEncoder返回的为数组。

以上这篇python对离散变量的one-hot编码方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python之wxPython菜单使用详解
Sep 28 Python
python中字典dict常用操作方法实例总结
Apr 04 Python
如何在Python中编写并发程序
Feb 27 Python
python正则分析nginx的访问日志
Jan 17 Python
基于Python实现的ID3决策树功能示例
Jan 02 Python
python reverse反转部分数组的实例
Dec 13 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
Jan 15 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
Oct 12 Python
Series和DataFrame使用简单入门
Nov 13 Python
Pyorch之numpy与torch之间相互转换方式
Dec 31 Python
Python collections模块的使用方法
Oct 09 Python
python中pandas.read_csv()函数的深入讲解
Mar 29 Python
Python基于多线程操作数据库相关问题分析
Jul 11 #Python
pandas 按照特定顺序输出的实现代码
Jul 10 #Python
Python OpenCV处理图像之图像直方图和反向投影
Jul 10 #Python
Python中 map()函数的用法详解
Jul 10 #Python
python 读取视频,处理后,实时计算帧数fps的方法
Jul 10 #Python
Python OpenCV处理图像之图像像素点操作
Jul 10 #Python
查找python项目依赖并生成requirements.txt的方法
Jul 10 #Python
You might like
【星际争霸1】人族1v7家ZBath
2020/03/04 星际争霸
比较全的PHP 会话(session 时间设定)使用入门代码
2008/06/05 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
Yii2增删改查之查询 where参数详细介绍
2016/08/08 PHP
php使用GD2绘制几何图形示例
2017/02/15 PHP
实例讲解php实现多线程
2019/01/27 PHP
广告切换效果(缓动切换)
2009/05/27 Javascript
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
2009/09/09 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
禁止页面刷新让F5快捷键及右键都无效
2014/01/22 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
JS获取填报扩展单元格控件的值的解决办法
2017/07/14 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
2018/02/05 Javascript
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
说说Vuex的getters属性的具体用法
2019/04/15 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
在JavaScript中如何访问暂未存在的嵌套对象
2019/06/18 Javascript
Angular8 Http拦截器简单使用教程
2019/08/20 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
Python理解递归的方法总结
2019/01/28 Python
使用python去除图片白色像素的实例
2019/12/12 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
Python实现微信表情包炸群功能
2021/01/28 Python
css3背景图片透明叠加属性cross-fade简介及用法实例
2013/01/08 HTML / CSS
将HTML5 Canvas的内容保存为图片借助toDataURL实现
2013/05/20 HTML / CSS
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
关于读书的演讲稿
2014/05/07 职场文书
学习保证书
2015/01/17 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
《狼王梦》读后感:可怜天下父母心
2019/11/01 职场文书
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers