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装饰器使用实例:验证参数合法性
Jun 24 Python
在Python中marshal对象序列化的相关知识
Jul 01 Python
python爬取51job中hr的邮箱
May 14 Python
详解python发送各类邮件的主要方法
Dec 22 Python
Windows下Python2与Python3两个版本共存的方法详解
Feb 12 Python
深入理解Python中的内置常量
May 20 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
Apr 05 Python
python实现图片筛选程序
Oct 24 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
Apr 01 Python
Python面向对象进阶学习
May 21 Python
kafka-python 获取topic lag值方式
Dec 23 Python
pytorch实现focal loss的两种方式小结
Jan 02 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
给海燕B411配件机起死回生配上件
2021/03/02 无线电
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
深入解析PHP中的(伪)多线程与多进程
2013/07/01 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
php_pdo 预处理语句详解
2016/11/21 PHP
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
js每隔5分钟执行一次ajax请求的实现方法
2013/11/27 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
JSON与XML优缺点对比分析
2015/07/17 Javascript
Jquery 垂直多级手风琴菜单附源码下载
2015/11/17 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
2018/11/11 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
解决Layui数据表格的宽高问题
2019/09/28 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
django上传图片并生成缩略图方法示例
2017/12/11 Python
用python与文件进行交互的方法
2018/03/01 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
python+django+rest框架配置创建方法
2019/08/31 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
python中pyplot基础图标函数整理
2020/11/10 Python
Canvas多边形绘制的实现方法
2019/08/05 HTML / CSS
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
股东合作协议书
2014/09/12 职场文书
市场部岗位职责
2015/02/12 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
致创业您:正能量激励人心句子(48条)
2019/08/15 职场文书
创业计划书之酒店
2019/08/30 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
CSS基础详解
2021/10/16 HTML / CSS
php png失真的原因及解决办法
2021/11/17 PHP