如何解决LGBM如何在没有规范的情况下处理分类特征
我正在与LGBM一起玩,并使用StingIndexer为我的分类特征建立了索引。但是在那之后,我还没有告诉我的模型哪些特征是分类特征。因此,我想知道它如何知道哪些特征是分类特征
这是我初始化LGBM模型的方式。
val lgbm = new LightGBMClassifier("lgbm").
setobjective("binary").
setFeatureFraction(0.85).
setFeaturesCol("features").
setLabelCol("is_booker")
解决方法
如果您使用的是mmlspark
(您没有提到在Scala中使用LightGBM的方式),LightGBM会根据列的属性自动找出哪些列应视为分类。
...如果您使用字符串索引器或我们的值索引器,则类别元数据将自动添加到数据框中,而lightgbm实际上将能够对其进行解释,并通过直接分割要素值将这些列视为类别(因此,无需对其进行一次热编码)
完成该任务的方法称为LightGBMUtils.getCategoricalIndexes()
,您可以在https://github.com/Azure/mmlspark/blob/95c1f8a782191e3578587a49313e1d57abee5da3/src/main/scala/com/microsoft/ml/spark/lightgbm/LightGBMUtils.scala#L74-L104上找到它。
LightGBMBase.getCategoricalIndexes()
在训练期间重复使用了该方法:
- 定义:https://github.com/Azure/mmlspark/blob/96f0b7775629d6e7b521d1ed8ca0e54655deef00/src/main/scala/com/microsoft/ml/spark/lightgbm/LightGBMBase.scala#L149-L159
- 使用:https://github.com/Azure/mmlspark/blob/96f0b7775629d6e7b521d1ed8ca0e54655deef00/src/main/scala/com/microsoft/ml/spark/lightgbm/LightGBMBase.scala#L211。
如果我对您使用的是mmlspark
是正确的,并且您对此还有其他疑问,建议您在Azure/mmlspark中打开问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。