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_ ...
随机推荐
- Tomcat 配置目录
TOMCAT 1.主目录下有bin,conf,lib,logs,temp,webapps,work 1.bin目录主要是用来存放tomcat的命令 2.conf目录主要是用来存放tomcat的一些配置 ...
- 发现一sonar-runner bug
最近在使用sonar-runner做代码扫描, 在windows环境运行多模块的扫描ok,但是在linux上sonar-runner扫描多模块报错: 先贴sonar-project.propertie ...
- JavaScript/HTML/CSS 之 iframe自适应高度
最高效简介的手段是利用CSS的内置calc函数: iframe{ height:calc(100vh - 50px) auto;//假令:html顶部有高度为50px的导航条 //min-height ...
- luogu P2726 [SHOI2005]树的双中心
传送门 强行安利->巨佬题解 如果只有一个点贡献答案,那么答案显然是这棵树的带权重心,这个是可以\(O(n)\)求的.一个\(O(n^2)\)暴力是枚举两个集合之间的分界边,然后对这两个集合分别 ...
- Git查看单个文件修改历史
1 命令 git log --pretty=oneline 文件名 ➜ admin git:(feature/v1.5.0_20181202_group) git log --pretty=onel ...
- Javascript定义变量
在JavaScript中通过var来定义变量,不管是数字还是字符串,都可以通过这种方式来定义:我们既可以在声明变量的同时给变量赋值,也可以先声明变量,再给变量赋值. <script> va ...
- Pyqt5自定义浏览器
from PyQt5.QtWebChannel import QWebChannel from PyQt5.QtWebEngineWidgets import QWebEngineView from ...
- WEBSHELL恶意代码批量提取清除工具
场景 使用D盾扫描到WEBSHELL后可以导出有路径的文本文件. 最后手动去把WEBSHELL复制到桌面然后以文件路径命名,挨个删除. D盾界面是这样的. 手动一个个找WEBSHELL并且改名效率太低 ...
- find结合rm删除或mv移动文件的方法
删除过期的备份文件,多用find结合rm方法,可以使用-exec或xargs -exec rm -rf {} \; 或 find /home/mysqlbackup -name "*$thi ...
- bat判断ini文件内容
@echo off for /f "tokens=1" %%d in (config.ini) do ( if /I "%%d" equ "path= ...