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实现类之间的方法互相调用
Apr 29 Python
python skimage 连通性区域检测方法
Jun 21 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
Jul 11 Python
Python全排列操作实例分析
Jul 24 Python
对Python实现简单的API接口实例讲解
Dec 10 Python
python-django中的APPEND_SLASH实现方法
Jun 21 Python
对Django外键关系的描述
Jul 26 Python
Python3使用PySynth制作音乐的方法
Sep 09 Python
Pycharm 安装 idea VIM插件的图文教程详解
Feb 21 Python
PyCharm上安装Package的实现(以pandas为例)
Sep 18 Python
PyQt QMainWindow的使用示例
Mar 24 Python
Python中基础数据类型 set集合知识点总结
Aug 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
destoon实现VIP排名一直在前面排序的方法
2014/08/21 PHP
thinkphp中U方法按路由规则生成url的方法
2018/03/12 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
PHP数组Key强制类型转换实现原理解析
2020/09/01 PHP
js动态创建表格,删除行列的小例子
2013/07/20 Javascript
jQuery简单实现禁用右键菜单
2015/03/10 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
Node.js文件操作方法汇总
2016/03/22 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
2016/08/25 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
详解VUE 数组更新
2017/12/16 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
JS实现的雪花飘落特效示例
2019/12/03 Javascript
Vue使用预渲染代替SSR的方法
2020/07/02 Javascript
[02:08]我的刀塔不可能这么可爱 胡晓桃_1
2014/06/20 DOTA
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
[01:46]新英雄登场
2019/09/10 DOTA
在Python中使用zlib模块进行数据压缩的教程
2015/06/26 Python
转换科学计数法的数值字符串为decimal类型的方法
2018/07/16 Python
详解Python装饰器
2019/03/25 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
python pandas生成时间列表
2019/06/29 Python
python实现电子词典
2020/03/03 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
东南亚排名第一的服务市场:kaodim
2019/03/28 全球购物
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
迎八一活动主题
2014/01/31 职场文书
小学生元旦感言
2014/02/26 职场文书
租房协议书范文
2014/08/20 职场文书
四风批评与自我批评发言稿
2014/10/14 职场文书
晚会开幕词
2015/01/28 职场文书
专家推荐信范文
2015/03/26 职场文书
《秋思》教学反思
2016/02/23 职场文书
Pandas数据类型之category的用法
2021/06/28 Python