pandas 中对特征进行硬编码和onehot编码的实现


Posted in Python onDecember 20, 2019

首先介绍两种编码方式硬编码和onehot编码,在模型训练所需要数据中,特征要么为连续,要么为离散特征,对于那些值为非数字的离散特征,我们要么对他们进行硬编码,要么进行onehot编码,转化为模型可以用于训练的特征

初始化一个DataFrame

import pandas as pd
df = pd.DataFrame([
 ['green', 'M', 20, 'class1'],
 ['red', 'L', 21, 'class2'],
 ['blue', 'XL',30, 'class3']])
df.columns = ['color', 'size', 'weight', 'class label']

pandas 中对特征进行硬编码和onehot编码的实现

硬编码:

将feature的值从0(或者1)开始进行连续编码,比如color进行硬编码,color的值有三个,分别为编码为1,2,3

可以用如下操作,对color字段下的值进行硬编码

colorMap = {elem:index+1 for index,elem in enumerate(set(df["color"]))}
df['color'] = df['color'].map(colorMap)

这样可以进行硬编码了,之前我的写法是,先生成map,然后对每一行进行apply,显然没有上述代码简便

onehot编码:

将某个字段下所有值横向展开,对于每条数据,其在对应展开的值上的值就是1,听起来比较绕口,看下面的例子就知道了,python中,pandas 用get_dummies()方法即可

data1 = pd.get_dummies(df[["color"]])

pandas 中对特征进行硬编码和onehot编码的实现

如果要对多个feature 进行onehot,这样即可df[[fea1,fea2..]]

对于onehot以后的数据,如果需要原有的数据合并,直接拿原来的join onehot的数据即可

res = df.join(data1)

pandas 中对特征进行硬编码和onehot编码的实现

join操作默认是根据index来进行join的,而get_dummies()不会改变index

以上这篇pandas 中对特征进行硬编码和onehot编码的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
简单介绍Python中的JSON模块
Apr 08 Python
Python编程中的文件读写及相关的文件对象方法讲解
Jan 19 Python
Fabric 应用案例
Aug 28 Python
使用Python对SQLite数据库操作
Apr 06 Python
利用python将json数据转换为csv格式的方法
Mar 22 Python
详解Python匿名函数(lambda函数)
Apr 19 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
Sep 05 Python
wxPython实现文本框基础组件
Nov 18 Python
用python画一只可爱的皮卡丘实例
Nov 21 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
Apr 01 Python
keras中的loss、optimizer、metrics用法
Jun 15 Python
python实现数字炸弹游戏
Jul 17 Python
使用python3批量下载rbsp数据的示例代码
Dec 20 #Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
Dec 20 #Python
Python字符串、列表、元组、字典、集合的补充实例详解
Dec 20 #Python
python获取网络图片方法及整理过程详解
Dec 20 #Python
python序列化与数据持久化实例详解
Dec 20 #Python
爬虫代理池Python3WebSpider源代码测试过程解析
Dec 20 #Python
python3的UnicodeDecodeError解决方法
Dec 20 #Python
You might like
PHP中include()与require()的区别说明
2010/03/10 PHP
yii中widget的用法
2014/12/03 PHP
php数组添加与删除单元的常用函数实例分析
2015/02/16 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
js cookies 常见网页木马挂马代码 24小时只加载一次
2009/04/13 Javascript
jQuery easyui datagrid动态查询数据实例讲解
2013/02/26 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
jquery实现带二级菜单的导航示例
2014/04/28 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
2015/08/10 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
setTimeout学习小结
2017/02/08 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
Vue中如何实现轮播图的示例代码
2017/07/27 Javascript
JS原生数据双向绑定实现代码
2017/08/14 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
微信小程序自定义导航教程(兼容各种手机)
2018/12/12 Javascript
小程序新版订阅消息模板消息
2019/12/31 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
jQuery实现计算器功能
2020/10/19 jQuery
[32:07]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第一场 12.16
2020/12/17 DOTA
python网络编程学习笔记(四):域名系统
2014/06/09 Python
基于python代码实现简易滤除数字的方法
2018/07/17 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
python3安装crypto出错及解决方法
2019/07/30 Python
大学学习个人的自我评价
2014/02/18 职场文书
80后职场人的职业生涯规划
2014/03/08 职场文书
建筑管理专业求职信
2014/07/28 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
上班旷工检讨书
2015/08/15 职场文书
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL