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使用urllib模块开发的多线程豆瓣小站mp3下载器
Jan 16 Python
Python迭代用法实例教程
Sep 08 Python
Python获取网页上图片下载地址的方法
Mar 11 Python
Python文件与文件夹常见基本操作总结
Sep 19 Python
Python之re操作方法(详解)
Jun 14 Python
matplotlib设置legend图例代码示例
Dec 19 Python
浅谈Python中的zip()与*zip()函数详解
Feb 24 Python
在Python中使用defaultdict初始化字典以及应用方法
Oct 31 Python
计算机二级python学习教程(3) python语言基本数据类型
May 16 Python
浅谈Tensorflow 动态双向RNN的输出问题
Jan 20 Python
Python基于requests实现模拟上传文件
Apr 21 Python
教你怎么用python selenium实现自动化测试
May 27 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
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
2011/08/23 PHP
php curl请求信息和返回信息设置代码实例
2015/04/27 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
2015/11/05 PHP
标准版Eclipse搭建PHP环境的详细步骤
2015/11/18 PHP
Symfony2 session用法实例分析
2016/02/04 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
PHP两个n位的二进制整数相加问题的解决
2018/08/26 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
2013/04/26 Javascript
jquery仿百度百科底部浮动导航特效
2015/08/08 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
详解vue-router 路由元信息
2017/09/13 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
在移动端使用vue-router和keep-alive的方法示例
2018/12/02 Javascript
Python编程之Re模块下的函数介绍
2017/10/28 Python
python 梯度法求解函数极值的实例
2019/07/10 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
python实现滑雪者小游戏
2020/02/22 Python
Django查询优化及ajax编码格式原理解析
2020/03/25 Python
python/golang 删除链表中的元素
2020/09/14 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
泰国的头号网上婴儿用品店:Motherhood.co.th
2019/04/09 全球购物
费用会计岗位职责
2014/01/01 职场文书
秦兵马俑教学反思
2014/02/07 职场文书
旅游安全协议书
2014/04/21 职场文书
大学生通用个人自我评价
2014/04/27 职场文书
政府门卫岗位职责
2014/04/29 职场文书
自我查摆剖析材料
2014/10/11 职场文书
质量保证书
2015/01/17 职场文书
小学生家长意见
2015/06/03 职场文书
详解Python为什么不用设计模式
2021/06/24 Python
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS