python - Label Encoding() 与 One Hot Encoding() (sklearn,pandas) 建议

标签 python pandas machine-learning scikit-learn feature-engineering

我的数据框中有 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 for is_femaleis_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/

相关文章:

python - Hadoop MapReduce(使用 Python)在 Pandas DataFrame 上启动 KeyError

machine-learning - multilayer_perceptron : ConvergenceWarning: Stochastic Optimizer: Maximum iterations reached and the optimization hasn't converged yet. 警告?

python - 将数据分组并汇总到新的 pandas 数据框中

python - 如何导入一个模块并在该模块所在的目录中打开一个文件?

python - 绘制数据框的散点图

Python MySQLdb转义字符: query works in MySQL but not in python MySQLdb

machine-learning - Gmail如何从文本中提取时间和日期

matlab - 在 MATLAB 中通过二进制训练数据训练决策树

python - 字符串正则表达式中多次出现相同字符 - Python

python - 从列表末尾反转切片到特定索引