ish*_*ido 32 python categorical-data xgboost
使用时XGBoost我们需要将分类变量转换为数字.
以下方法之间的绩效/评估指标是否会有任何差异:
也:
是否有任何理由不使用例如方法2 labelencoder?
T. *_*arf 44
xgboost 仅处理数字列.
如果你有一个[a,b,b,c]描述分类变量的功能(即没有数字关系)
使用LabelEncoder你只需要:
array([0, 1, 1, 2])
Run Code Online (Sandbox Code Playgroud)
Xgboost 将错误地将此功能解释为具有数字关系! 这只是将每个字符串映射('a','b','c')到一个整数,仅此而已.
合适的方式
使用OneHotEncoder,您最终会得到:
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
Run Code Online (Sandbox Code Playgroud)
这是适用于xgboost任何其他机器学习工具的分类变量的正确表示.
Pandas get_dummies是一个很好的工具,用于创建虚拟变量(在我看来,它更容易使用).
上述问题中的方法#2不能正确表示数据
Jon*_*tan 10
2020 年 11 月 23 日
\nXGBoost 从 1.3.0 版本开始增加了对分类特征的实验性支持。来自文档:
\n\n\n1.8.7 分类数据
\n除了执行编码的用户之外,XGBoost 还对使用gpu_hist和gpu_predictor的分类数据提供实验性支持。无需对输入测试数据执行特殊操作,因为有关类别的信息在训练期间已编码到模型中。
\n
https://buildmedia.readthedocs.org/media/pdf/xgboost/latest/xgboost.pdf
\n在 DMatrix 部分,文档还说:
\n\n\nenable_categorical(布尔值,可选)\xe2\x80\x93 版本 1.3.0 中的新增功能。
\n专门针对分类特征的实验支持。除非您对开发感兴趣,否则不要设置为 True。目前它\xe2\x80\x99s\仅适用于具有1与其余(一个热)\n分类分割的gpu_hist树方法。此外,还需要 JSON 序列化格式、gpu_predictor 和\npandas 输入。
\n
| 归档时间: |
|
| 查看次数: |
32993 次 |
| 最近记录: |