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深入学习之装饰器
Aug 31 Python
使用Python3 编写简单信用卡管理程序
Dec 21 Python
Django 使用Ajax进行前后台交互的示例讲解
May 28 Python
Django结合ajax进行页面实时更新的例子
Aug 12 Python
Python中如何添加自定义模块
Jun 09 Python
Python with语句用法原理详解
Jul 03 Python
python3 循环读取excel文件并写入json操作
Jul 14 Python
Python爬虫中Selenium实现文件上传
Dec 04 Python
python中delattr删除对象方法的代码分析
Dec 15 Python
Python 中的函数装饰器和闭包详解
Feb 06 Python
Python3+Appium安装及Appium模拟微信登录方法详解
Feb 16 Python
Python可变集合和不可变集合的构造方法大全
Dec 06 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变量作用域以及地址引用问题
2013/12/27 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
PHP定时执行任务的3种方法详解
2015/12/21 PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
2016/03/07 PHP
一个实用的php验证码类
2017/07/06 PHP
javascript 打印内容方法小结
2009/11/04 Javascript
myFocus slide3D v1.1.0 使用方法与下载
2011/01/12 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
javascript 在firebug调试时用console.log的方法
2012/05/10 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
jQuery自定义添加"$"与解决"$"冲突的方法
2015/01/19 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
Node.js 异步异常的处理与domain模块解析
2017/05/10 Javascript
jQuery实现的简单对话框拖动功能示例
2018/06/05 jQuery
vue-router 起步步骤详解
2019/03/26 Javascript
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
Python的pycurl包用法简介
2015/11/13 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
Python多线程同步---文件读写控制方法
2019/02/12 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
基于Python爬取fofa网页端数据过程解析
2020/07/13 Python
python接口自动化框架实战
2020/12/23 Python
工作失职检讨书范文
2014/01/16 职场文书
劳动之星获奖感言
2014/02/01 职场文书
挂职学习心得体会
2014/09/09 职场文书
不遵守课堂纪律的检讨书
2014/09/24 职场文书
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
2016大学迎新欢迎词
2015/09/29 职场文书
2016年小学六一儿童节活动总结
2016/04/06 职场文书
python flask框架快速入门
2021/05/14 Python
Python干货实战之八音符酱小游戏全过程详解
2021/10/24 Python
i7 6700处理器相当于i5几代
2022/04/19 数码科技