定量变量和定性变量的转换
(TransformofQuantitativeQualitati。。。
定量变量(Quantitative Variables):也称为数值型变量(Numerical Variables),可以⽤连续值或离散值表⽰。⽐如:⽓温(连续值),学⽣⼈数(离散值)。
将定量变量转换为定性变量的⽅法为:分区间(Binning),包括等宽分区间以及⾃适应分区间。
1. 等宽分区间(Fixed-Width Binning):可以⽤pandas的cut()⽅法⾃⼰设定区间范围。等宽分区间的缺点是:落在某个区间中的数据点的数⽬不⼀定是均匀的,因此可能会得到不规则的区间。⼀些区间中的数据可能会⾮常的密集,⼀些区间则会⾮常稀疏甚⾄是空的。因此,⾃适应分区间⽅法是⼀个更安全的策略。
2. ⾃适应分区间(Adptive Binning):使⽤数据的四分位数来确定区间范围,这样确保每个区间内的数据个数是相同的。
定性变量(Qualitative Variables):也称为类别型变量(Categorical Variables),通常⽤⽂本字符串或离散值表⽰。根据变量之间是否存在次序关系,⼜可以分为有序型定性变量(Ordinal)和⽆序型定性变量(Nominal)。⽐如:⾐服的尺⼨“⼤中⼩”(有序型),男⼥性别(⽆序型)。
为什么要对定性变量进⾏转换?因为最终我们需要进⾏数值间的运算,⽽⽂本字符串之间⽆法进⾏运算。即使将⽂本字符串转变为离散值表⽰,⽐如将⾐服的尺⼨⼤中⼩表⽰为0:⼩,1:中,2:⼤,虽然将次序体现出来了(2>1>0),但还是不合理,因为不管对于有序型定性变量,还是⽆序型定性变量来说,这样的数值运算都没有意义。⽐如⾐服的尺⼨这个例⼦,如果将⼤减去中,其结果等于2-1=1,这是表⽰中号尺⼨等于⼤号尺⼨减去中号尺⼨吗?这显然是不合理且没有意义的。因此我们需要⽤其他⽅式对定性变量进⾏转换。
有两种转换⽅式:a. 将定性变量转换为虚拟变量,b. 将定性变量转换为定量变量。
a. 将定性变量转换为虚拟变量:
1. 虚拟编码(Dummy Coding):如果某个特征变量有n个类别,那么虚拟编码会将其转换成n-1个⼆进制编码。变量的每个类别都被转换成n-1 维向量。我们将减少的这个类别作为基准,其由全部是0组成的向量表⽰。转换后的变量称为虚拟变量(Dummy Variables)。
0    2-⼤
1    1-中
2    2-⼤
3    0-⼩
Name: ⾐服尺⼨, dtype: object
col=pd.Series(["2-⼤","1-中","2-⼤","0-⼩"],name="⾐服尺⼨")
_dummies(col).iloc[:,1:])
1-中  2-⼤
0    0    1
1    1    0
2    0    1
3    0    0
我们创建了⼀个⾐服尺⼨的Series,由四个样本组成。转换为虚拟变量后,可以看到变量由⼆进制组成的向量表⽰:⼤-[0,1],中-[1,0],⼩-[0,0]。其中把“⼩”作为基准,从特征中删去,因为“⼤”和“中”这两个特征⾜以表⽰所有的信息(不是⼤和中,便是⼩)。
2. 独热编码(One Hot Encoding):如果某个特征变量有n个类别,那么独热编码会将其转换成n个⼆进制编码。变量的每个类别都被转换成 n 维向量,其中只有某⼀维的值为 1(表⽰激活状态)。
col=pd.Series(["2-⼤","1-中","2-⼤","0-⼩"],name="⾐服尺⼨")
transform的例句_dummies(col))
0-⼩  1-中  2-⼤
0    0    0    1
1    0    1    0
2    0    0    1
3    1    0    0
还是⽤上⾯⾐服尺⼨这个例⼦,转换为独热编码后,变量由⼆进制组成的向量表⽰为:⼤-[0,0,1],中-[0,1,0],⼩-[1,0,0]。
col=pd.Series(["2-⼤","1-中","2-⼤","0-⼩"],name="⾐服尺⼨")
_dummies(col).iloc[:,1:]
dummy=dummy.astype(np.int8)
dummy.loc[np.all(dummy==0,axis=1)]=-1
print(dummy)
1-中  2-⼤
0    0    1
1    1    0
2    0    1
3  -1  -1
还是⽤上⾯⾐服尺⼨这个例⼦,转换为效果编码后,变量由⼆进制组成的向量表⽰为:⼤-[0,1],中-[1,0],⼩-[-1,-1]。
4. 区间计数(Bin Counting):对于有m个类别的某个特征,经过上述转换后,将会变成m个新的特征。因此,当任意特征的类别数量变得很⼤的时候,很可能会造成维度灾难。我们需要针对那些可能具有⾮常多类别的特征(如 IP 地址),研究其它的转换⽅法。区间计数使⽤基于概率的统计信息和在建模过程中所要预测的实际⽬标进⾏编码,⽽不是使⽤实际的标签值。这个⽅案需要历史数据作为先决条件,并且要求数据⾮常详尽。
5. 特征哈希(Feature Hashing):哈希函数通常与预设的编码特征的数量(作为预定义长度向量)⼀起使⽤。哈希⽅案适⽤于字符串、数字和其它结构(如向量)。如果我们有⼀个特征拥有 1000 个不同的类别,我们设置最终的特征向量长度为10,那么最终输出的特征将只有
10 个。特征哈希的缺点是可解释性不强。
b. 将定性变量转换为定量变量:
对于多个有序的定性变量,如果将其转换为虚拟变量,会损失掉每个定性变量本⾝的顺序信息和定性变量间的关联信息。为了解决这个问题,常常根据类别的顺序,将定性变量转换为定量变量。转换⽅法有:Ridit scoring(⼆分类问题),WOE(weight of evidence)等等。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。