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基于xml parse实现解析cdatasection数据
Sep 30 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
Apr 21 Python
Python 由字符串函数名得到对应的函数(实例讲解)
Aug 10 Python
Python实现字典的遍历与排序功能示例
Dec 23 Python
python dict 相同key 合并value的实例
Jan 21 Python
对python多线程SSH登录并发脚本详解
Feb 14 Python
Pyinstaller打包.py生成.exe的方法和报错总结
Apr 02 Python
值得收藏的10道python 面试题
Apr 15 Python
Django如何自定义model创建数据库索引的顺序
Jun 20 Python
Django框架模型简单介绍与使用分析
Jul 18 Python
python3爬虫GIL修改多线程实例讲解
Nov 24 Python
Django filter动态过滤与排序实现过程解析
Nov 26 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生成静态HTML页面最简单方法示例
2015/04/09 PHP
php实现微信公众号无限群发
2015/10/11 PHP
php中引用&的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
javascript 写类方式之九
2009/07/05 Javascript
现如今最流行的JavaScript代码规范
2014/03/08 Javascript
JQuery控制radio选中和不选中方法总结
2015/04/15 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
2015/07/27 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
使用AJAX实现Web页面进度条的实例分享
2016/05/06 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
浅谈Vue父子组件和非父子组件传值问题
2017/08/22 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
vue+element的表格实现批量删除功能示例代码
2018/08/17 Javascript
js中call()和apply()改变指针问题的讲解
2019/01/17 Javascript
layer.confirm()右边按钮实现href的例子
2019/09/27 Javascript
vue  elementUI 表单嵌套验证的实例代码
2019/11/06 Javascript
python encode和decode的妙用
2009/09/02 Python
linecache模块加载和缓存文件内容详解
2018/01/11 Python
详解python3中tkinter知识点
2018/06/21 Python
djano一对一、多对多、分页实例代码
2019/08/16 Python
Python的形参和实参使用方式
2019/12/24 Python
Tensorflow实现部分参数梯度更新操作
2020/01/23 Python
Python中断多重循环的几种方式详解
2020/02/10 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
Python实现将元组中的元素作为参数传入函数的操作
2020/06/05 Python
如何写python的配置文件
2020/06/07 Python
大学毕业典礼演讲稿
2014/09/09 职场文书
教师批评与自我批评(群众路线)
2014/10/15 职场文书
旷课检讨书范文
2014/10/30 职场文书
捐款通知怎么写
2015/04/24 职场文书
心术观后感
2015/06/11 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript
html中显示特殊符号(附带特殊字符对应表)
2021/06/21 HTML / CSS
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python