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 17 Python
详解python调度框架APScheduler使用
Mar 28 Python
使用Turtle画正螺旋线的方法
Sep 22 Python
Python拼接字符串的7种方法总结
Nov 01 Python
Python3中列表list合并的四种方法
Apr 19 Python
python3.7 使用pymssql往sqlserver插入数据的方法
Jul 08 Python
Django ImageFiled上传照片并显示的方法
Jul 28 Python
python实现把二维列表变为一维列表的方法分析
Oct 08 Python
Python3交互式shell ipython3安装及使用详解
Jul 11 Python
Python自动化之UnitTest框架实战记录
Sep 08 Python
如何在Python3中使用telnetlib模块连接网络设备
Sep 21 Python
将不规则的Python多维数组拉平到一维的方法实现
Jan 11 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生成各种常见验证码和Ajax验证过程
2016/01/10 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
php中namespace及use用法分析
2016/12/06 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
js模拟弹出效果代码修正版
2008/08/07 Javascript
动态创建script标签实现跨域资源访问的方法介绍
2014/02/28 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
jQuery中DOM操作实例分析
2015/01/23 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
jquery对dom节点的操作【推荐】
2016/04/15 Javascript
基于Vue.js 2.0实现百度搜索框效果
2020/12/28 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
纯js实现隔行变色效果
2017/11/29 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
Vue实现简单分页器
2018/12/29 Javascript
微信小程序身份证验证方法实现详解
2019/06/28 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
python实现的简单窗口倒计时界面实例
2015/05/05 Python
详解Python编程中time模块的使用
2015/11/20 Python
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
2019/06/13 Python
Python常用库大全及简要说明
2020/01/17 Python
使用Django和Postgres进行全文搜索的实例代码
2020/02/13 Python
美国乡村商店:Plow & Hearth
2016/09/12 全球购物
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
Blue Nile中国官网:全球知名的钻石和珠宝网络零售商
2020/03/22 全球购物
机电专业大学生职业规划书范文
2014/02/25 职场文书
班主任新年寄语
2014/04/04 职场文书
小学节能减排倡议书
2014/05/15 职场文书
体育系毕业生自荐信
2014/06/28 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
教育见习报告范文
2014/11/03 职场文书
敬业奉献模范事迹材料(2016精选版)
2016/02/26 职场文书