博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常见的类别型数据列编码方法汇总
阅读量:4154 次
发布时间:2019-05-25

本文共 1379 字,大约阅读时间需要 4 分钟。

目录

python数据分析和建模过程中,常见的类别型数据编码方法有OneHotEncoder, LabelEncoder , LabelBinarizer,pandas.get_dummies。下面逐一介绍。

1、OneHotEncoder

OneHotEncoder既可以对字符串型变量或数值型变量进行编码(旧版可能只能对数值型变量进行编码)

import pandas as pdimport numpy as npfrom sklearn.preprocessing import OneHotEncoderfrom sklearn.preprocessing import LabelEncoderfrom sklearn.preprocessing import LabelBinarizerfrom sklearn.preprocessing import MultiLabelBinarizercolumns = ['性别','学历','工资']data = pd.DataFrame([['男','女','女','男'],['本科','硕士','硕士','本科'],[6000,8800,8000,12000]])data = data.T   #对二维数组进行转置data.columns = columnsprint(data)onehot_edu = OneHotEncoder(sparse=False).fit_transform(data[['学历']]) onehot_edu_sal = OneHotEncoder(sparse=False).fit_transform(data[['性别','学历']]) print(onehot_edu)print(onehot_edu_sal)

在这里插入图片描述

在这里插入图片描述

OneHotEncoder 的输入必须是 2-D array,因此不能是data[‘学历’],它的类型是series,是个一维数组,要加两层中括号:data[[‘学历’]]

2、 LabelEncoder

即将离散型的数据转换成 0到 n − 1 之间的数。

LabelEncoder从名字可以看出它是用来对标签值进行编码的,所以默认输入的数组是一维的,如果输入的数组不是一维的,它会尝试将其转化为一维的:

LabelEncoder().fit_transform(data[['性别']])

在这里插入图片描述

如果不能转化为一维的,则会报错:

LabelEncoder().fit_transform(data[['性别','学历']])

在这里插入图片描述

3、LabelBinarizer

对非数值型标签进行二值化:

lb = LabelBinarizer() #构建一个转换对象Y = lb.fit_transform(data['学历'])re_label = lb.inverse_transform(Y)print(Y)print(re_label)

在这里插入图片描述

4、pandas.get_dummies

可以对任何类型数据进行编码:

encoded = pd.get_dummies(data[['学历','性别','工资']])encoded

在这里插入图片描述

注意这个方法中有个参数sparse,默认值是sparse=False,如果设置为True后,后续有些处理可能会出错,需要注意!

转载地址:http://karti.baihongyu.com/

你可能感兴趣的文章
进程创建时命名空间处理
查看>>
进程创建时IO处理
查看>>
进程创建时线程栈处理
查看>>
进程创建时pid分配
查看>>
进程创建时安全计算处理
查看>>
进程创建时cgroup处理
查看>>
进程创建时共享内存处理
查看>>
idle进程创建
查看>>
内核线程创建
查看>>
linux elf tool readelf
查看>>
linux tool objdump
查看>>
linux tool nm
查看>>
字节对齐
查看>>
把类成员函数封装成线程API所需要的函数
查看>>
HTTP Live Streaming直播(iOS直播)技术分析与实现
查看>>
Ribbon界面图标可以直接用PNG做透明图标
查看>>
向其他软件窗口、控件发送消息的方法
查看>>
word或者pdf文件全部保存为图片的方法
查看>>
VS2010下SQLite3生成lib库文件
查看>>
sqlite3的helloworld
查看>>