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的Django框架部署的一些建议
Apr 09 Python
Python中的单行、多行、中文注释方法
Jul 19 Python
Python多继承原理与用法示例
Aug 23 Python
Python列表list排列组合操作示例
Dec 18 Python
浅谈Python批处理文件夹中的txt文件
Mar 11 Python
Django中在xadmin中集成DjangoUeditor过程详解
Jul 24 Python
TensorFlow实现从txt文件读取数据
Feb 05 Python
Python 格式化打印json数据方法(展开状态)
Feb 27 Python
Python openpyxl模块实现excel读写操作
Jun 30 Python
Python操作Elasticsearch处理timeout超时
Jul 17 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
Jan 15 Python
python如何将mat文件转为png
Jul 15 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项目的方法
2006/10/09 PHP
PHP网站开发中常用的8个小技巧
2015/02/13 PHP
php array_multisort 对数组进行排序详解及实例代码
2016/10/27 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
2020/05/15 PHP
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
JavaScript+CSS控制打印格式示例介绍
2014/01/07 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
总结js中的一些兼容性易错的问题
2017/12/18 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
微信小程序使用gitee进行版本管理
2018/09/20 Javascript
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
layui富文本编辑器前端无法取值的解决方法
2019/09/18 Javascript
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
2020/02/14 Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
2020/07/19 Javascript
jquery简易手风琴插件的封装
2020/10/13 jQuery
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
Python实现的个人所得税计算器示例
2018/06/01 Python
Python 2.7中文显示与处理方法
2018/07/16 Python
python2 对excel表格操作完整示例
2020/02/23 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
Python3 中sorted() 函数的用法
2020/03/24 Python
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
教师实习自我鉴定
2013/12/14 职场文书
幼儿园义卖活动方案
2014/01/17 职场文书
在校硕士自我鉴定
2014/01/23 职场文书
捐款活动总结
2014/08/27 职场文书
八荣八耻演讲稿
2014/09/15 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
2016廉洁从业学习心得体会
2016/01/19 职场文书
Python 用户输入和while循环的操作
2021/05/23 Python
Java使用JMeter进行高并发测试
2021/11/23 Java/Android
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python