文章目录
1 为什么需要对变量进行编码?
对于机器学习模型来说,预测模型只能对数值类型进行建模分析,而很多时候变量不是数值类型的。比如很多分类变量(如性别:{’'男,‘女’})是字符串类型的,在输入到模型进行训练之前需要将变量的取值转化为数值类型。
2 数据类型有哪几类?
将数据分为三个维度,首先按变量取值是否为连续值可以分为{连续,离散},按照变量是否为数值型分为{数值型,非数值型},按照变量的值是否可以排序可以分为{可排序,不可排序}。理论上按照这三个维度,共有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编码对这种变量编码。
加粗样式