Python类别变量处理
Python类别变量处理
Categorical Encoding Methods
categorical feature(类别变量)是在数据分析中十分常见的特征变量,但是在进行建模时,python不能像R那样去直接处理非数值型的变量,因此我们往往需要对这些类别变量进行一系列转换,如哑变量或是独热编码。
在查找后发现一个开源包category_encoders,可以使用多种不同的编码技术把类别变量转换为数值型变量,并且符合sklearn模式的转换。
以下是对category_encoders使用方法的介绍:
category_encoders的下载
在cmd使用pip或conda两种下载方式均可下载,下载命令如下:
pip install category_encoders
conda install -c conda-forge category_encoders
category_encoders的使用
All of these are fully compatible sklearn transformers, so they can be used in pipelines or in your existing scripts. Supported input formats include numpy arrays and pandas dataframes. If the cols parameter isn’t passed, all columns with object or pandas categorical data type will be encoded. Please see the docs for transformer-specific configuration options.
上述是的原文介绍,大意为"所有的这些方法都完全兼容sklearn的转换模式,因此他们呢能够直接用到管道函数或者你先前的脚本中。支持numpy数值和pandas数据框的输入格式。如果没有传递cols=[...]
的参数,将对对象或数据框的所有的类别型变量进行编码。"
在使用前可以通过import category_encoders as ce
加载包,并以ce.
的形式调用不同的编码方法,各种不同的编码方法及对应代码如下:
- Backward Difference Contrast:
ncoder = ce.BackwardDifferenceEncoder(cols=[...])
- BaseN:
encoder = ce.BaseNEncoder(cols=[...])
- Binary:
encoder = ce.BinaryEncoder(cols=[...])
- Hashing:
encoder = ce.HashingEncoder(cols=[...])
- Helmert Contrast:
encoder = ce.HelmertEncoder(cols=[...])
- LeaveOneOut :
encoder = ce.LeaveOneOutEncoder(cols=[...])
- Ordinal :
encoder = ce.OrdinalEncoder(cols=[...])
- One-Hot:
encoder = ce.OneHotEncoder(cols=[...])
- Polynomial Contrast:
encoder = ce.PolynomialEncoder(cols=[...])
- Sum Contrast:
encoder = ce.SumEncoder(cols=[...])
- Target Encoding:
encoder = ce.TargetEncoder(cols=[...])
- Weight of Evidence:
encoder = ce.WOEEncoder(cols=[...])
使用时在函数的cols
参数中带入需要转换的列名组成的列表即可,在下面的示例中以binary encoding的方法为例,介绍了category_encoders内编码函数的使用方法。
示例
在下列的例子中构建了一个含有G(good)和B(bad)为评分的数据框,使用category_encoders中的BinaryEncoder方法对该类别变量进行编码,下列是整个转换过程的代码实现,转换后的数据形式如下所示。
# 相关模块加载
import pandas as pd
import category_encoders as ce# 准备数据
df = pd.DataFrame({'ID':[1,2,3,4,5,6],'RATING':['G','B','G','B','B','G']})# 使用binary编码的方式来编码类别变量
encoder = ce.BinaryEncoder(cols=['RATING']).fit(df)# 转换数据
numeric_dataset = encoder.transform(df)df # 转换前的数据
ID | RATING | |
---|---|---|
0 | 1 | G |
1 | 2 | B |
2 | 3 | G |
3 | 4 | B |
4 | 5 | B |
5 | 6 | G |
numeric_dataset # 转换后的数据
RATING_0 | RATING_1 | ID | |
---|---|---|---|
0 | 0 | 1 | 1 |
1 | 1 | 0 | 2 |
2 | 0 | 1 | 3 |
3 | 1 | 0 | 4 |
4 | 1 | 0 | 5 |
5 | 0 | 1 | 6 |
由于包含的编码方式过多,不对所有编码方法的作用和原理进行详细介绍,需要深究各个编码方法的原理的同学可阅读category_encoders在github下方的参考文献。
Escher
2018/10/30
Python类别变量处理相关推荐
- python数据类型有序无序,python数据类型有序无序_python中的有序和无序类别变量...
类别变量转化为数字,需要区分是否是有序类别,如 male和female,就是无序的,应该转化成(1,0)和(0,1),但衣服大小,M,L,XL,则应转化为1,2,3 若将无序属性连续化,则会不恰当的引 ...
- Python下数值型与字符型类别变量独热编码(One-hot Encoding)实现
1 OneHotEncoder 2 pd.get_dummies 在数据处理与分析领域,数值型与字符型类别变量的编码是不可或缺的预处理操作.本文基于Python下OneHotEncoder与pd. ...
- 树模型对类别变量的 7 种处理方法(Python代码)
在数据挖掘项目的数据中,数据类型可以分为两种:有序的连续数值 和 无序的类别型特征. 对于xgboost.GBDT等boosting树模型,基学习通常是cart回归树,而cart树的输入通常只支持连续 ...
- python哑变量转换为类别变量
就是get_dummies()功能的逆变化,把哑变量重新变为类别变量 原先的数据 转变后的数据 代码如下: df.columns=[1,2,3,4,5,6]df =df[df==1].stack(). ...
- python 分类变量编码_深度学习编码分类变量的3种方法——AIU人工智能学院
:数据科学.人工智能从业者的在线大学. 数据科学(Python/R/Julia) 作者 | CDA数据分析师 像Keras中的机器学习和深度学习模型一样,要求所有输入和输出变量均为数字. 这意味着,如 ...
- 机器学习数据中类别变量(categorical variable)的处理方法
类别变量(categorical variable):只有有限个值得变量,如性别就是一个类别变量,类似于这种. 如果不对这些变量做预处理,训练出来的模型可能是错误的. 主要有三种方法来处理这个变量. ...
- 如何对类别变量进行独热编码
大部分机器学习算法是基于向量空间中度量来进行计算的,使用独热编码(One-hot encoding, 也称为哑变量 dummy variable)会让特征之间的距离计算更加合理.通过独热编码把类别变量 ...
- python 分类变量转为哑变量_机器学习笔记——哑变量处理
在机器学习的特征处理环节,免不了需要用到类别型特征,这类特征进入模型的方式与一般数值型变量有所不同. 通常根据模型的需要,类别型特征需要进行哑变量处理,即按照特征类别进行编码,一般一个类别为k的特征需 ...
- python常用变量名_python基础知识整理
Python Python开发 Python语言 python基础知识整理 序言:本文简单介绍python基础知识的一些重要知识点,用于总结复习,每个知识点的具体用法会在后面的博客中一一补充程序: 一 ...
最新文章
- SuperGLUE和GLUE双料冠军!图灵T-NLRv5:MNLI和RTE首次达到人类水平
- LNMP - Warning: require(): open_basedir restriction in effect错误解决方法
- redis 查看key的有效期_你经常忽略的Redis常见面试题,精选给你整理
- CSS中z-index全解析
- java中this的含义_Javascript中的this的含义
- (原創) 如何讀取/寫入文字檔? (IC Design) (Verilog)
- 判断浏览器是否支持某个css属性
- HDU2049(错列排序)
- Android Sqlite
- 线程run方法和start方法的区别
- python 批量打印文档_使用python将Excel数据填充Word模板并生成Word
- gstat | 空间插值(二)——克里金插值之普通克里金
- 路由器启用SNMP服务
- 成都市金牛区2018年小学入学划片范围
- PHP开发环境配置:ThinkPHP与IDE
- pd.read_csv处理含中文的文件
- 瑞芯微PX30芯片参数和处理器介绍
- 【Linux学习笔记】40:配置自己的桌面版CentOS6.9
- 混合开发中,H5页面与原生app交互(方法互相调用与传参)
- 真正了解@font face里font-weight的作用