类别型变量因子化原因及方法总结

参考线性回归分析中的哑变量

哑变量(Dummy Variable),也叫虚拟变量,引入哑变量的目的是,将不能够定量处理的变量量化,如职业、性别对收入的影响,战争、自然灾害对GDP的影响,季节对某些产品(如冷饮)销售的影响等等。 这种“量化”通常是通过引入“哑变量”来完成的。根据这些因素的属性类型,构造只取“0”或“1”的人工变量,通常称为哑变量(dummy variables),记为D。

举一个例子,假设变量“职业”的取值分别为:工人、农民、学生、企业职员、其他,5种选项,我们可以增加4个哑变量来代替“职业”这个变量,分别为D1(1=工人/0=非工人)、D2(1=农民/0=非农民)、D3(1=学生/0=非学生)、D4(1=企业职员/0=非企业职员),最后一个选项“其他”的信息已经包含在这4个变量中了,所以不需要再增加一个D5(1=其他/0=非其他)了。这个过程就是引入哑变量的过程,其实在结合分析(conjoint analysis)中,就是利用哑变量来分析各个属性的效用值的。

在线性回归分析中引入哑变量的目的是,可以考察定性因素对因变量的影响。

参考Kaggle泰坦尼克预测(完整分析)


因为逻辑回归建模时,需要输入的特征都是数值型特征,我们通常会先对类目型的特征因子化。 
什么叫做因子化呢?举个例子:

以Cabin为例,原本一个属性维度,因为其取值可以是[‘yes’,’no’],而将其平展开为’Cabin_yes’,’Cabin_no’两个属性

  • 原本Cabin取值为yes的,在此处的”Cabin_yes”下取值为1,在”Cabin_no”下取值为0
  • 原本Cabin取值为no的,在此处的”Cabin_yes”下取值为0,在”Cabin_no”下取值为1

实现类别变量因子化的方法:

方法1.pandas 中的get_dummies()

dummies_Cabin = pd.get_dummies(data_train['Cabin'], prefix= 'Cabin')

类别型变量因子化原因及方法总结_第1张图片类别型变量因子化原因及方法总结_第2张图片

在获得某个分类变量的哑变量之后,原来的一个特征就变成了两个特征,原数据集的更新操作:

data_train.drop('Cabin', axis=1, inplace=True)
data_train = pd.concat([data_train, dummies_Cabin], axis=1)

方法2:one hot encoding

将有N个类的一个特征编码为长度为N的二进制向量。

python实现

sklearn.preprocessing.OneHotEncoder


你可能感兴趣的:(特征工程)