在训练模型之前,我们通常都要对训练数据进行一定的处理。将类别编号就是一种常用的处理方法,比如把类别“男”,“女”编号为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的使用的更多相关文章

  1. 11.sklearn.preprocessing.LabelEncoder的作用

    In [5]: from sklearn import preprocessing ...: le =preprocessing.LabelEncoder() ...: le.fit(["p ...

  2. 利用sklearn的LabelEncoder对标签进行数字化编码

    from sklearn.preprocessing import LabelEncoder def gen_label_encoder(): labels = ['BB', 'CC'] le = L ...

  3. pandas 下的 one hot encoder 及 pd.get_dummies() 与 sklearn.preprocessing 下的 OneHotEncoder 的区别

    sklearn.preprocessing 下除了提供 OneHotEncoder 还提供 LabelEncoder(简单地将 categorical labels 转换为不同的数字): 1. 简单区 ...

  4. 数据规范化——sklearn.preprocessing

    sklearn实现---归类为5大类 sklearn.preprocessing.scale()(最常用,易受异常值影响) sklearn.preprocessing.StandardScaler() ...

  5. 【sklearn】数据预处理 sklearn.preprocessing

    数据预处理 标准化 (Standardization) 规范化(Normalization) 二值化 分类特征编码 推定缺失数据 生成多项式特征 定制转换器 1. 标准化Standardization ...

  6. sklearn.preprocessing.LabelBinarizer

    sklearn.preprocessing.LabelBinarizer

  7. sklearn preprocessing (预处理)

    预处理的几种方法:标准化.数据最大最小缩放处理.正则化.特征二值化和数据缺失值处理. 知识回顾: p-范数:先算绝对值的p次方,再求和,再开p次方. 数据标准化:尽量将数据转化为均值为0,方差为1的数 ...

  8. sklearn学习笔记(一)——数据预处理 sklearn.preprocessing

    https://blog.csdn.net/zhangyang10d/article/details/53418227 数据预处理 sklearn.preprocessing 标准化 (Standar ...

  9. sklearn.preprocessing.StandardScaler 离线使用 不使用pickle如何做

    Having said that, you can query sklearn.preprocessing.StandardScaler for the fit parameters: scale_ ...

随机推荐

  1. 20155332 2006-2007-2 《Java程序设计》第4周学习总结

    20155332 2006-2007-2 <Java程序设计>第4周学习总结 教材学习内容总结 理解封装.继承.多态的关系 理解抽象类与接口的区别 掌握S.O.L.I.D原则 了解模式和设 ...

  2. 青云VPC网络配置

    1 创建VPC网络 2 申请公网IP 3 回到VPC图形界面绑定公网ip 4 创建私有网络,并绑定私有网络 5 创建3台主机 6 新建防火墙,并绑定到VPC 7 配置VPC端口转发规则 8 添加防火墙 ...

  3. 当WebView运行在特权进程时抛出安全异常,Hook方式解决方案(包含对Android 8.0的处理)

    1.问题起源报错语句是:java.lang.UnsupportedOperationException: For security reasons, WebView is not allowed in ...

  4. Java中eclipse与命令行向main函数传递参数

    我们知道main函数是java程序的入口,main函数的参数类型是String[]. 1.Eclipse中向main方法传递参数 例如: public class Mytest { public st ...

  5. Java读取txt文件——(二)

    Txt数据

  6. ProcessHacker可编译版本

    说明 做一个批量进程内搜索字符串的工具. 试了processhacker-2.39-src.zip. https://sourceforge.net/projects/processhacker/fi ...

  7. 【黑客免杀攻防】读书笔记2 - 免杀与特征码、其他免杀技术、PE进阶介绍

    第3章 免杀与特征码 这一章主要讲了一些操作过程.介绍了MyCCL脚本木马免杀的操作,对于定位特征码在FreeBuf也曾发表过类似工具. VirTest5.0特征码定位器 http://www.fre ...

  8. ES系列十六、集群配置和维护管理

    一.修改配置文件 1.节点配置 1.vim elasticsearch.yml # ======================== Elasticsearch Configuration ===== ...

  9. dubbo系列七、dubbo @Activate 注解使用和实现解析

    一.用法 Activate注解表示一个扩展是否被激活(使用),可以放在类定义和方法上,dubbo用它在spi扩展类定义上,表示这个扩展实现激活条件和时机. @Activate(group = Cons ...

  10. 编译安装lamp环境

    httpd 2.4.9 + mysql-5.5.33 + php-5.4.29编译安装过程: 准备好以下安装包: mysql-5.5.33-linux2.6-x86_64.tar.gz apr-uti ...