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写asp详细讲解
Dec 16 Python
Python 常用的安装Module方式汇总
May 06 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
Oct 01 Python
Python实现两款计算器功能示例
Dec 19 Python
Python元组拆包和具名元组解析实例详解
Mar 26 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
Aug 12 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
Jan 20 Python
vue常用指令代码实例总结
Mar 16 Python
在Tensorflow中实现leakyRelu操作详解(高效)
Jun 30 Python
python的launcher用法知识点总结
Aug 07 Python
python爬取股票最新数据并用excel绘制树状图的示例
Mar 01 Python
教你使用Python pypinyin库实现汉字转拼音
May 27 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 修改、增加xml结点属性的实现代码
2013/10/22 PHP
PHP邮件发送类PHPMailer用法实例详解
2014/09/22 PHP
PHP实现字符串的全排列详解
2019/04/24 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
javascript 日历提醒系统( 兼容所有浏览器 )
2009/04/07 Javascript
js 多种变量定义(对象直接量,数组直接量和函数直接量)
2010/05/24 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
2013/12/16 Javascript
文本域中换行符的替换示例
2014/03/04 Javascript
javascript记录文本框内文字个数检测文字个数变化
2014/10/14 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
AngularJS中的缓存使用
2017/01/11 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
web前端开发中常见的多列布局解决方案整理(一定要看)
2017/10/15 Javascript
教你用Cordova打包Vue项目的方法
2017/10/17 Javascript
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
在vue里使用codemirror遇到的问题
2018/11/01 Javascript
vue中改变滚动条样式的方法
2020/03/03 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
详解Python中的from..import绝对导入语句
2016/06/21 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
python selenium firefox使用详解
2019/02/26 Python
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
建材业务员岗位职责
2013/12/08 职场文书
社区学雷锋活动策划方案
2014/01/30 职场文书
文员求职信
2014/07/15 职场文书
公民代理授权委托书
2014/09/24 职场文书
2015年世界无烟日活动总结
2015/02/10 职场文书
《刷子李》教学反思
2016/02/20 职场文书
初三语文教学反思
2016/03/03 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书
Redis源码阅读:Redis字符串SDS详解
2021/07/15 Redis
Jedis操作Redis实现模拟验证码发送功能
2021/09/25 Redis