作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在使用XGBoost
时,我们需要将分类变量转换为数值。
以下方法在性能/评估指标上是否存在差异:
还有:
是否有任何理由不使用方法 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 无法正确表示数据
关于python - XGBoost 分类变量 : Dummification vs encoding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34265102/
在使用XGBoost时,我们需要将分类变量转换为数值。 以下方法在性能/评估指标上是否存在差异: 虚拟化分类变量 对您的分类变量进行编码,例如(a,b,c) 到 (1,2,3) 还有: 是否有任何理由
我是一名优秀的程序员,十分优秀!