微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

LGBM如何在没有规范的情况下处理分类特征

如何解决LGBM如何在没有规范的情况下处理分类特征

我正在与LGBM一起玩,并使用StingIndexer为我的分类特征建立了索引。但是在那之后,我还没有告诉我的模型哪些特征是分类特征。因此,我想知道它如何知道哪些特征是分类特征

这是我初始化LGBM模型的方式。

val lgbm = new LightGBMClassifier("lgbm").
  setobjective("binary").
  setFeatureFraction(0.85).
  setFeaturesCol("features").
  setLabelCol("is_booker")

解决方法

如果您使用的是mmlspark(您没有提到在Scala中使用LightGBM的方式),LightGBM会根据列的属性自动找出哪些列应视为分类。

来自Azure/mmlspark#559

...如果您使用字符串索引器或我们的值索引器,则类别元数据将自动添加到数据框中,而lightgbm实际上将能够对其进行解释,并通过直接分割要素值将这些列视为类别(因此,无需对其进行一次热编码)

完成该任务的方法称为LightGBMUtils.getCategoricalIndexes(),您可以在https://github.com/Azure/mmlspark/blob/95c1f8a782191e3578587a49313e1d57abee5da3/src/main/scala/com/microsoft/ml/spark/lightgbm/LightGBMUtils.scala#L74-L104上找到它。

LightGBMBase.getCategoricalIndexes()在训练期间重复使用了该方法:

如果我对您使用的是mmlspark是正确的,并且您对此还有其他疑问,建议您在Azure/mmlspark中打开问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。