我的数据框中有 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']
,我应该对它进行 labelEncode 还是 One hot? (由于没有顺序,我使用了One Hot Encoding)
<强> df['Income']
有很多变化。那么我应该将其转换为垃圾箱并使用 One Hot Encoding 解释 low
, medium
, high
收入?
最佳答案
我推荐:
对于
sex
,one-hot 编码,即使用单个 bool 值 var foris_female
或is_male
;对于 n 个类别,您需要 n-1 one-hot-encoded vars 因为 第 n 个与第一个 n-1 线性相关。对于
vehicles_owned
,如果您想保留顺序,我会重新映射 您的变量从[1,2,3,3+]
到[1,2,3,4]
并视为 int var, 或[1,2,3,3.5]
作为浮点变量。对于
收入
:您可能应该将其保留为浮点变量。 某些模型(例如 GBT 模型)可能会进行某种分箱 在引擎盖下。如果你的收入数据恰好呈指数增长 发行版,您可以尝试记录
它。但只需将其转换为 我不建议您在自己的特征工程中使用 bin。
针对所有这些事情的元建议是建立一个您有信心的交叉验证方案,为您的所有特征工程决策尝试不同的公式,然后遵循交叉验证的性能衡量标准来做出最终决定。
最后,在使用哪个库/函数之间,我更喜欢 pandas 的 get_dummies
因为它允许您在最终的特征矩阵中保留列名信息,如下所示: https://stackoverflow.com/a/43971156/1870832
关于python - Label Encoding() 与 One Hot Encoding() (sklearn,pandas) 建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59397816/