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解析html开发库pyquery使用方法
Feb 07 Python
Python中实现参数类型检查的简单方法
Apr 21 Python
python访问mysql数据库的实现方法(2则示例)
Jan 06 Python
Python3实现发送QQ邮件功能(html)
Dec 15 Python
Python批量提取PDF文件中文本的脚本
Mar 14 Python
详解python websocket获取实时数据的几种常见链接方式
Jul 01 Python
Python企业编码生成系统之主程序模块设计详解
Jul 26 Python
pytorch使用指定GPU训练的实例
Aug 19 Python
Python代码注释规范代码实例解析
Aug 14 Python
PyQT5速成教程之Qt Designer介绍与入门
Nov 02 Python
PyCharm 解决找不到新打开项目的窗口问题
Jan 15 Python
Python多个MP4合成视频的实现方法
Jul 16 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
极典R601SW收音机
2021/03/02 无线电
php a simple smtp class
2007/11/26 PHP
php版微信发红包接口用法示例
2016/09/23 PHP
laravel 出现command not found问题的解决方案
2019/10/23 PHP
JavaScript 组件之旅(三):用 Ant 构建组件
2009/10/28 Javascript
JavaScript 数组运用实现代码
2010/04/13 Javascript
jQuery load方法用法集锦
2011/12/06 Javascript
Jquery实现弹出层分享微博插件具备动画效果
2013/04/03 Javascript
JS滚轮事件onmousewheel使用介绍
2013/11/01 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
JS动态显示表格上下frame的方法
2015/03/31 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
jQuery操作cookie
2016/08/08 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
JavaScript实现的联动菜单特效示例
2019/07/08 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
2020/03/23 Javascript
Vue 数据绑定的原理分析
2020/11/16 Javascript
vue 页面跳转的实现方式
2021/01/12 Vue.js
vue脚手架项目创建步骤详解
2021/03/02 Vue.js
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
浅析python中的迭代与迭代对象
2018/10/08 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
Python unittest单元测试openpyxl实现过程解析
2020/05/27 Python
手把手教你用Django执行原生SQL的方法
2021/02/18 Python
Square Off美国/加拿大:世界上最聪明的国际象棋棋盘
2018/12/06 全球购物
如何开启linux的ssh服务
2015/02/14 面试题
委托书模板
2014/04/04 职场文书
家长通知书教师评语
2014/04/17 职场文书
建筑工地质量标语
2014/06/12 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
农村房屋租赁合同(范本)
2019/07/23 职场文书