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类的专用方法实例分析
Jan 09 Python
python开发之基于thread线程搜索本地文件的方法
Nov 11 Python
Python 逐行分割大txt文件的方法
Oct 10 Python
python如何查看微信消息撤回
Nov 27 Python
pandas每次多Sheet写入文件的方法
Dec 10 Python
python3利用ctypes传入一个字符串类型的列表方法
Feb 12 Python
详解pandas删除缺失数据(pd.dropna()方法)
Jun 25 Python
Python学习笔记之Django创建第一个数据库模型的方法
Aug 07 Python
调试Django时打印SQL语句的日志代码实例
Sep 12 Python
Pytorch在NLP中的简单应用详解
Jan 08 Python
pycharm 实现本地写代码,服务器运行的操作
Jun 08 Python
python引入其他文件夹下的py文件具体方法
May 23 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代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
PHP的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
jQuery ul标签下拉菜单演示代码
2010/12/11 Javascript
javascript学习笔记(四) Number 数字类型
2012/06/19 Javascript
jQuery获取选中内容及设置元素属性的方法
2014/07/09 Javascript
JavaScript针对网页节点的增删改查用法实例
2015/02/02 Javascript
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
2016/07/08 Javascript
AngularJS表单详解及示例代码
2016/08/17 Javascript
基于jQuery实现Tabs选项卡自定义插件
2016/11/21 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
使用javaScript实现鼠标拖拽事件
2020/04/03 Javascript
jQuery实现的简单图片轮播效果完整示例
2018/02/08 jQuery
对vue下点击事件传参和不传参的区别详解
2018/09/15 Javascript
vue如何实现自定义底部菜单栏
2019/07/01 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
2019/07/31 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
2019/10/12 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
2019/11/05 Javascript
vue video和vue-video-player实现视频铺满教程
2020/10/30 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
2020/11/16 Javascript
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
[53:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第三场 1月18日
2021/03/11 DOTA
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
实例讲解Python编程中@property装饰器的用法
2016/06/20 Python
Python面向对象特殊成员
2017/04/24 Python
对Python中DataFrame选择某列值为XX的行实例详解
2019/01/29 Python
在线购买世界上最好的酒:BoozeBud
2018/06/07 全球购物
在Java开发中如何选择使用哪种集合类
2016/08/09 面试题
打架检讨书500字
2014/01/29 职场文书
市政管理求职信范文
2014/05/07 职场文书
任命书格式
2014/06/05 职场文书
初中班级口号
2014/06/09 职场文书
政风行风建设整改方案
2014/10/27 职场文书
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL