不同变量编码的方法

1 为什么需要对变量进行编码?

对于机器学习模型来说,预测模型只能对数值类型进行建模分析,而很多时候变量不是数值类型的。比如很多分类变量(如性别:{’'男,‘女’})是字符串类型的,在输入到模型进行训练之前需要将变量的取值转化为数值类型。

2 数据类型有哪几类?

将数据分为三个维度,首先按变量取值是否为连续值可以分为{连续,离散},按照变量是否为数值型分为{数值型,非数值型},按照变量的值是否可以排序可以分为{可排序,不可排序}。理论上按照这三个维度,共有8种数据类型:

  1. 连续-数值型-可排序
  2. 连续-数值型-不可排序
  3. 连续-非数值型-可排序
  4. 连续-非数值型-不可排序
  5. 离散-数值型-可排序
  6. 离散-数值型-不可排序
  7. 离散-非数值型-可排序
  8. 离散-非数值型-不可排序

但是有几种数据是不存在的,因为连续变量一定是数值型的,有意义且可以排序。所以2、3、4这样的变量类型是不存在的。

2.1 不同数据类型举例

2.1.1 连续-数值型-可排序

比如GDP、收入等等,在某个实数区间内可以取到任何值,且值的大小可以比较。

2.1.2 离散-数值型-可排序

比如每个人持有信用卡的数量,只能取到0-n的整数,所以不连续,但是值的大小可以比较,是有实际意义的。

2.1.3 离散-数值型-不可排序

这种情况下,一个变量的取值是一般是整数,但是不是数字含义,更像是代号。用类似abc的字母也能代替。比如一个变量代表地区信息,1代表北京,2代表上海,3代表广州…这个时候数字更像是代号,而不是真实的含义。这个时候值的大小无法比较,不能说2>1(即北京>上海),所以这时候变量的值是不可排序的,或者说没有顺序。

2.1.4 离散-非数值型-可排序

比如说人的年龄,取值为幼年、青年、中年、老年,这个时候变量不是数值型的,但是该变量的取值有明显的顺序关系——幼年<青年<中年<老年,这个时候虽然值不是数值型的,但是却是可以排序的。

2.1.5 离散-非数值型-不可排序

比如说变量为行业类型,可以分为计算机、会计、媒体、零售、农业、旅游业、金融等,为离散变量,非数值型,且变量去值为并列的,没有大小关系,不可排序。

3. 如何对不同类型的变量进行编码?

3.1 连续-数值型-可排序

连续变量一般不需要编码,可以直接输入到模型。但是很多时候需要对连续变量进行离散化,这时候需要用到变量分箱,再配合变量编码(如WOE编码,Label编码),可以提高变量的可解释性,降低异常值的影响。

3.2 离散-数值型-可排序

一般不需要进行编码,可以直接输入模型

3.3 离散-数值型-不可排序

因为是不可排序的变量,所以数值是没有意义的。为了保证各个取值的距离相等,一般采用独热编码(one hot encoder)对变量进行编码,也可用WOE编码

3.4 离散-非数值型-可排序

一般采用Label编码对这种类型的变量进行编码,数值无实际意义,但是可以比较大小、距离。

3.5 离散-非数值型-不可排序

一般采用独热编码(one hot encoder)或者WOE编码对这种变量编码。

加粗样式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,处理分类变量通常涉及到将类别数据转换为数值形式,以便于机器学习模型的训练。以下是几种常见的分类变量编码方法: 1. **标签编码(Label Encoding)**:这是一种最基础的编码方式,将每个类别映射到一个连续的整数。例如,将"红色"、"蓝色"和"绿色"分别编码为0、1和2。对于二元分类变量,可以直接用0和1表示。 2. **独热编码(One-Hot Encoding)**:适用于离散的分类变量,将每个类别变成一个二进制向量,只有一个维度上的值为1,其余为0。如性别(男=0, 女=1)或颜色(红=00, 蓝=01, 绿=10)。 3. **有序编码(Ordinal Encoding)**:对于有序的分类变量,使用递增的数字表示等级,但不保证数量关系。比如产品评分(1-5星)。 4. **多项式编码(Polynomial Encoding)**:对独热编码的扩展,用于创建多项式特征,例如两个独热特征相乘。 5. **Target Encoding(目标编码)**:基于目标变量的平均值或众数进行编码,常用于预测性建模中的类别特征,特别在决策树和随机森林中。 6. **CatBoost Encoding(Categorical Boosting Encoding)**:专为梯度提升算法设计的编码方法,结合了目标编码和基尼系数等特性。 选择哪种编码方法取决于具体问题、模型类型以及数据集的特点。在实际应用中,可能会结合交叉验证和模型性能来决定最佳编码方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值