我的数据帧中有3种类型的分类数据,df
。你知道吗
df['Vehicles Owned'] = [1,2,3+,2,1,2,3+,2]
df['Sex'] = ['m','m','f','m','f','f','m','m']
df['Income'] = [42424,65326,54652,9463,9495,24685,52536,23535]
我应该为df['Vehicles Owned']
做些什么?(通过将3+转换为整数,一个热编码、标签编码或保持原样。我使用了整数值。寻找建议,因为有秩序)
对于df['Sex']
,我应该给它标上编码还是一个热的?(由于没有顺序,我使用了一个热编码)
有很多变异。所以我应该把它转换成bins并使用一个热编码来解释low
,medium
,high
收入吗?
选择编码的主要标准应该是结果数据的维数。一个热编码比标签编码好,这并不总是正确的,但是在许多情况下(在值集很小的情况下)它确实如此。你知道吗
对于
Sex
,我肯定会选择一种热编码。训练数据将把这个列转换成两个(m
和f
),这不会成为分类器的负担。如前所述,一个热编码通常对一小部分可能的值表现得更好。你知道吗对于
Income
,建议使用标签编码,因为可能值的范围很大。我要说的更多-可能不需要编码-它不是一个分类数据。你知道吗如果我要拍一张照片,对于
Vehicles Owned
,我会使用标签编码来避免维度地狱。你知道吗但这些都是一个好的开始,没有严格的规则来使用这些编码类型和简单的检查将是最好的解决方案。你知道吗
我建议:
对于
sex
,一个热编码,转换为使用一个布尔值 用于is_female
或is_male
的var;对于n个类别,需要n-1 一个热编码变量是因为 n与前n-1成线性关系。对于
vehicles_owned
如果你想保持秩序,我会重新映射 从[1,2,3,3+]
到[1,2,3,4]
的变量并将其视为int变量, 或[1,2,3,3.5]
作为浮点变量。对于
income
:您应该把它作为一个float变量。 某些模型(如GBT模型)可能会进行某种类型的装箱 在引擎盖下面。如果你的收入数据正好有一个指数 分布,您可以尝试log
使用它。但只是把它转换成 我不推荐你自己特性工程中的垃圾箱。对所有这些事情的元建议是建立一个你有信心的交叉验证方案,为你的所有特性工程决策尝试不同的公式,然后遵循你的交叉验证性能度量来做出最终的决策。你知道吗
最后,在使用哪个库/函数之间,我更喜欢pandas的
get_dummies
,因为它允许您在最终的特征矩阵中保持列名的信息性,例如:https://stackoverflow.com/a/43971156/1870832相关问题 更多 >
编程相关推荐