python encoding参数_Python类别变量处理(Categorical Encoding Methods)

categorical feature(类别变量)是在数据分析中十分常见的特征变量,但是在进行建模时,python不能像R那样去直接处理非数值型的变量,因此我们往往需要对这些类别变量进行一系列转换,如哑变量或是独热编码。

在查找后发现一个开源包

以下是对category_encoders使用方法的介绍:

2.1 category_encoders的下载

在cmd使用pip或conda两种下载方式均可下载,下载命令如下:

pip install category_encoders

conda install -c conda-forge category_encoders

2.2 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内编码函数的使用方法。

2.3 示例

在下列的例子中构建了一个含有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 # 转换前的数据

numeric_dataset # 转换后的数据

由于包含的编码方式过多,不对所有编码方法的作用和原理进行详细介绍,需要深究各个编码方法的原理的同学可阅读

Escher

2018/10/30

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值