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类别变量处理相关推荐

  1. python数据类型有序无序,python数据类型有序无序_python中的有序和无序类别变量...

    类别变量转化为数字,需要区分是否是有序类别,如 male和female,就是无序的,应该转化成(1,0)和(0,1),但衣服大小,M,L,XL,则应转化为1,2,3 若将无序属性连续化,则会不恰当的引 ...

  2. Python下数值型与字符型类别变量独热编码(One-hot Encoding)实现

    1 OneHotEncoder 2 pd.get_dummies   在数据处理与分析领域,数值型与字符型类别变量的编码是不可或缺的预处理操作.本文基于Python下OneHotEncoder与pd. ...

  3. 树模型对类别变量的 7 种处理方法(Python代码)

    在数据挖掘项目的数据中,数据类型可以分为两种:有序的连续数值 和 无序的类别型特征. 对于xgboost.GBDT等boosting树模型,基学习通常是cart回归树,而cart树的输入通常只支持连续 ...

  4. python哑变量转换为类别变量

    就是get_dummies()功能的逆变化,把哑变量重新变为类别变量 原先的数据 转变后的数据 代码如下: df.columns=[1,2,3,4,5,6]df =df[df==1].stack(). ...

  5. python 分类变量编码_深度学习编码分类变量的3种方法——AIU人工智能学院

    :数据科学.人工智能从业者的在线大学. 数据科学(Python/R/Julia) 作者 | CDA数据分析师 像Keras中的机器学习和深度学习模型一样,要求所有输入和输出变量均为数字. 这意味着,如 ...

  6. 机器学习数据中类别变量(categorical variable)的处理方法

    类别变量(categorical variable):只有有限个值得变量,如性别就是一个类别变量,类似于这种. 如果不对这些变量做预处理,训练出来的模型可能是错误的. 主要有三种方法来处理这个变量. ...

  7. 如何对类别变量进行独热编码

    大部分机器学习算法是基于向量空间中度量来进行计算的,使用独热编码(One-hot encoding, 也称为哑变量 dummy variable)会让特征之间的距离计算更加合理.通过独热编码把类别变量 ...

  8. python 分类变量转为哑变量_机器学习笔记——哑变量处理

    在机器学习的特征处理环节,免不了需要用到类别型特征,这类特征进入模型的方式与一般数值型变量有所不同. 通常根据模型的需要,类别型特征需要进行哑变量处理,即按照特征类别进行编码,一般一个类别为k的特征需 ...

  9. python常用变量名_python基础知识整理

    Python Python开发 Python语言 python基础知识整理 序言:本文简单介绍python基础知识的一些重要知识点,用于总结复习,每个知识点的具体用法会在后面的博客中一一补充程序: 一 ...

最新文章

  1. SuperGLUE和GLUE双料冠军!图灵T-NLRv5:MNLI和RTE首次达到人类水平
  2. LNMP - Warning: require(): open_basedir restriction in effect错误解决方法
  3. redis 查看key的有效期_你经常忽略的Redis常见面试题,精选给你整理
  4. CSS中z-index全解析
  5. java中this的含义_Javascript中的this的含义
  6. (原創) 如何讀取/寫入文字檔? (IC Design) (Verilog)
  7. 判断浏览器是否支持某个css属性
  8. HDU2049(错列排序)
  9. Android Sqlite
  10. 线程run方法和start方法的区别
  11. python 批量打印文档_使用python将Excel数据填充Word模板并生成Word
  12. gstat | 空间插值(二)——克里金插值之普通克里金
  13. 路由器启用SNMP服务
  14. 成都市金牛区2018年小学入学划片范围
  15. PHP开发环境配置:ThinkPHP与IDE
  16. pd.read_csv处理含中文的文件
  17. 瑞芯微PX30芯片参数和处理器介绍
  18. 【Linux学习笔记】40:配置自己的桌面版CentOS6.9
  19. 混合开发中,H5页面与原生app交互(方法互相调用与传参)
  20. 真正了解@font face里font-weight的作用

热门文章

  1. ing:自发进化心理学
  2. 安装Tomcat详细步骤
  3. 软件测是中W模型和V模型 H模型X模型的优缺点
  4. STM32CubeIDE移植标准库
  5. python学习记录三——读写exceld内容代码,openpyxl模块内
  6. MySQL的analyze table和optimize table对表进行定期优化
  7. ZYNQ基础----裸机USB的使用
  8. spring boot bilibili
  9. HNOI2016D1T3 树 题解
  10. 去哪儿VS携程产品分析