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

yipeiwu_com5年前Python基础

首先介绍两种编码方式硬编码和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']

硬编码:

将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"]])

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

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

res = df.join(data1)

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

以上这篇pandas 中对特征进行硬编码和onehot编码的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Django中提供的6种缓存方式详解

前言 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者m...

Python3使用turtle绘制超立方体图形示例

Python3使用turtle绘制超立方体图形示例

本文实例讲述了Python3使用turtle绘制超立方体图形。分享给大家供大家参考,具体如下: 利用Python3中turtle的绘制超立方体。 绘图思路: 1)求出边长100的超立方...

python字符串格式化方式解析

1.%格式符 name = '李四' age = 18 a = "姓名:%s,年龄:%s"%(name,age) print(a) #姓名:李四,年龄:18 ​ b...

在Python中等距取出一个数组其中n个数的实现方式

在Python中等距取出一个数组其中n个数的实现方式

应用场景: 实验中不断得到新数据,想将数据图形化,但随着时间推移,数据越来越多, 此时需要我们等距选择数据列表中固定数量的数据,来进行图形化。 注:保留首尾数据。 import nu...

详解Python编程中time模块的使用

一、简介 time模块提供各种操作时间的函数 说明:一般有两种表示时间的方式: 第一种是时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的 第二种以...