使用时XGBoost
我们需要将分类变量转换为数字.
以下方法之间的绩效/评估指标是否会有任何差异:
使您的分类变量变得模糊
将您的分类变量编码为例如(a,b,c)到(1,2,3)
也:
是否有任何理由不使用例如方法2 labelencoder
?
xgboost
仅处理数字列.
如果你有一个[a,b,b,c]
描述分类变量的功能(即没有数字关系)
使用LabelEncoder你只需要:
array([0, 1, 1, 2])
Xgboost
将错误地将此功能解释为具有数字关系! 这只是将每个字符串映射('a','b','c')
到一个整数,仅此而已.
合适的方式
使用OneHotEncoder,您最终会得到:
array([[ 1., 0., 0.], [ 0., 1., 0.], [ 0., 1., 0.], [ 0., 0., 1.]])
这是适用于xgboost
任何其他机器学习工具的分类变量的正确表示.
Pandas get_dummies是一个很好的工具,用于创建虚拟变量(在我看来,它更容易使用).
上述问题中的方法#2不能正确表示数据