sklearn.preprocessing.LabelEncoder的使用
在训练模型之前,我们通常都要对训练数据进行一定的处理。将类别编号就是一种常用的处理方法,比如把类别“男”,“女”编号为0和1。可以使用sklearn.preprocessing中的LabelEncoder处理这个问题。
作用
将n个类别编码为0~n-1之间的整数(包含0和n-1)。
例子
假设我们要对性别数据进行编码,则数据可以分为两种情况:无NaN,有NaN。
首先导入要使用的包
import numpy as np
import pandas as pd
from sklearn import preprocessing
无NaN
数据如下
sex = pd.Series(["male", "female", "female", "male"])
使用LabelEncoder进行处理,过程如下
le = preprocessing.LabelEncoder() #获取一个LabelEncoder
le = le.fit(["male", "female"]) #训练LabelEncoder, 把male编码为0,female编码为1
sex = le.transform(sex) #使用训练好的LabelEncoder对原数据进行编码
print(sex)
输出:
[1 0 0 1]
可以看到LabelEncoder将源数据中用字符串表示的类别编码成int型的数字,便于训练。
根据编码后的类别还可以获取编码前的类别:
le.inverse_transform([1,0,0,1])
输出:
array(['male', 'female', 'female', 'male'], dtype='<U6')
有NaN
假如数据中包含NaN,如下
sex = pd.Series(["male", "female", "female", np.nan])
这时执行
le = preprocessing.LabelEncoder() #获取一个LabelEncoder
le = le.fit(["male", "female"]) #训练LabelEncoder, 把male编码为0,female编码为1
sex = le.transform(sex) #使用训练好的LabelEncoder对原数据进行编码
print(sex)
就会出错
ValueError: y contains previously unseen labels: nan
解决方法也很简单,只要把NaN替换掉就行了
sex.fillna("unknown", inplace=True)
le = preprocessing.LabelEncoder() #获取一个LabelEncoder
le = le.fit(["male", "female", "unknown"]) #训练LabelEncoder, 把male编码为0,female编码为1, unknown为2
sex = le.transform(sex) #使用训练好的LabelEncoder对原数据进行编码
print(sex)
输出:
[1 0 0 2]
这里将NaN替换为unkown,将unknown加入le.fit中,这样unknown就会被编码为2了。
总结
sklearn.preprocessing.LabelEncoder可以简单方便地将数据中的类别编码。
sklearn.preprocessing.LabelEncoder的使用的更多相关文章
- 11.sklearn.preprocessing.LabelEncoder的作用
In [5]: from sklearn import preprocessing ...: le =preprocessing.LabelEncoder() ...: le.fit(["p ...
- 利用sklearn的LabelEncoder对标签进行数字化编码
from sklearn.preprocessing import LabelEncoder def gen_label_encoder(): labels = ['BB', 'CC'] le = L ...
- pandas 下的 one hot encoder 及 pd.get_dummies() 与 sklearn.preprocessing 下的 OneHotEncoder 的区别
sklearn.preprocessing 下除了提供 OneHotEncoder 还提供 LabelEncoder(简单地将 categorical labels 转换为不同的数字): 1. 简单区 ...
- 数据规范化——sklearn.preprocessing
sklearn实现---归类为5大类 sklearn.preprocessing.scale()(最常用,易受异常值影响) sklearn.preprocessing.StandardScaler() ...
- 【sklearn】数据预处理 sklearn.preprocessing
数据预处理 标准化 (Standardization) 规范化(Normalization) 二值化 分类特征编码 推定缺失数据 生成多项式特征 定制转换器 1. 标准化Standardization ...
- sklearn.preprocessing.LabelBinarizer
sklearn.preprocessing.LabelBinarizer
- sklearn preprocessing (预处理)
预处理的几种方法:标准化.数据最大最小缩放处理.正则化.特征二值化和数据缺失值处理. 知识回顾: p-范数:先算绝对值的p次方,再求和,再开p次方. 数据标准化:尽量将数据转化为均值为0,方差为1的数 ...
- sklearn学习笔记(一)——数据预处理 sklearn.preprocessing
https://blog.csdn.net/zhangyang10d/article/details/53418227 数据预处理 sklearn.preprocessing 标准化 (Standar ...
- sklearn.preprocessing.StandardScaler 离线使用 不使用pickle如何做
Having said that, you can query sklearn.preprocessing.StandardScaler for the fit parameters: scale_ ...
随机推荐
- 汕头市队赛 SRM 07 D 天才麻将少女kpm
这道题放了很久还是回来补了 D 天才麻将少女KPM SRM 07 背景&&描述 天才麻将少女KPM立志要在日麻界闯出一番名堂. KPM上周叒打了n场麻将,但她这次又没控分,而且 ...
- Postfix 邮件服务 - 邮箱组件 cyrus-sasl
cyrus-sasl 简单认证安全层, SASL主要是用于SMTP认证.cyrus-sasl(Simple Authentication Security Layer)简单认证安全层, SASL主要是 ...
- 复选框QCheckBox
复选框一共有三种状态:全选中.半选中和无选中.若一个父选项的子选项全部为选中状态,则该父选项为全选中:若子选项全部为无选中状态,则该父选项为无选中状态:若子选项既有全选中和无选中状态,则该父选项为半选 ...
- luogu P2480 [SDOI2010]古代猪文
M_sea:这道题你分析完后就是一堆板子 废话 理解完题意后,我们要求的东西是\(G^s(s=\sum_{d|n} \binom{n}{d})\) 但是这个指数\(s\)算出来非常大,,, 我们可以利 ...
- MySQL内连接、外连接、交叉连接
外连接: 左连接:left join 或 left outer join 以左边的表为基准,如果左表有数据,而右表没有数据,左表的数据正常显示,右表数据显示为空. 创建user表,用于记录用户 use ...
- TortoiseSVN常用配置
在Windows下推荐使用乌龟(Tortoise)SVN客户端. TortoiseSVN 是 Subversion 版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录. 文件保存在中央版本 ...
- zabbix添加对自定义无规则的关键日志文件的监控
zabbix添加对自定义无规则日志文件的监控 项目背景及思路: zabbix自带有针对日志文件的监控,自带的监控只能监控到指定文件或者正则匹配的固定日志文件,但当需要监控的文件名没有规律的时候自带监控 ...
- Oracle数据库操作基本语法
创建表 SQL>create table classes( classId number(2), cname varchar2(40), birthda ...
- HTTP基础知识2
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...
- Ex 5_22 在此我们基于以下性质给出一个新的最小生成树算法..._第九次作业
(a)设环的顶点集为V, e(u,v)为权最重的边,若把V分成两部分V1,V2.其中V1包含u,V2包含v,因为V是一个环,因此,至少存在两条把u和v连接起来的边.因此,除了e之外,至少还存在另一条边 ...