我正在处理一个具有许多潜在预测器的数据集,如:
年龄:连续
儿童人数:离散和数字
婚姻状况:绝对(已婚/单身/离婚)。)
Id_User :绝对的(对这个人进行第一次采访的用户身份)
我要说的是四个潜在的预测因素,还有更多,但为了简短起见,这些都足以问我的问题了。
注意:我知道遵循某种模式的分类特征可以被编码为整数并提供给模型,但如果这些分类特征作为整数没有任何意义(1表示单数,2表示已婚,3表示离婚;对于将其作为定量预测器的模型,将其作为定量预测器的模型没有意义)。
发布于 2019-04-12 12:19:16
您正在寻找的是所谓的虚拟变量,它们将您的分类数据转换为一个矩阵,如果该列属于某个类别,则列为1,否则为0。
变量ID是不可转换的,因为您不希望您的模型过度适应您的ID数据(意思是:您不希望您的模型记住每个ID的结果,您希望您的模型是通用的)。
import pandas as pd
dataset2 = pd.get_dummies(dataset)发布于 2019-04-12 11:29:07
对于分类特性的编码,有两种常见的方法:
序数编码器
这就是你提到的“编码为整数”的方式。在此方法中,从0开始的整数分配给每个类别。这种方法的问题是,它随机排序类别。因此,在类别之间没有优先级的情况下,正如您提到的那样,这种编码是毫无意义的。唯一有效的情况是将较大的整数分配给某些类别是有意义的。
单热编码器
该方法为每个分类特征生成一个特征向量(一个热向量),其大小与类别数相同。该方法将向量的每个分量分配给其中一个类别。对于每个数据样本,它将1分配给在该样本中存在其对应类别的组件,并将0分配给其他组件。这种方法的好处是,与序数编码器不同,它不对任何类别进行排序。
所以在你的情况下,我强烈建议你使用一个热编码器。
发布于 2019-04-12 15:36:47
正如其他人所说,虚拟变量是一种方法。另一种方法是从拥有这种属性的人群中获取数量统计数据。例如,您可以创建一个“婚姻状况平均值”列,并在与该主题具有相同婚姻状况的人之间填充目标变量的平均值。
如果您使用的是树方法,那么简单地将整数赋值到每个类别将近似于虚拟变量,特别是在只有几个类别的情况下。例如,如果婚姻状况的唯一类别是已婚、单身、离婚和丧偶,并且分别将其分配为0、1、2、3,那么唯一可能的分裂是结婚与其他一切,丧偶与其他一切,或已婚/单身与离婚/丧偶。因此,三分之二的分裂实际上是虚拟变量,当你再次分裂这个变量时,最后一个就会变成一个虚拟变量。
https://datascience.stackexchange.com/questions/49185
复制相似问题