首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >GBTClassifier如何处理二进制分类的不平衡数据?

GBTClassifier如何处理二进制分类的不平衡数据?
EN

Stack Overflow用户
提问于 2019-05-17 21:25:51
回答 1查看 203关注 0票数 0

我想用GBTClassifier对不平衡的数据集执行二进制分类。我没有看到spark documentation允许这样做的任何选项。

有没有人知道如何通过指定我们的数据不平衡的事实来使用GBTClassifier?

谢谢

注:我使用的是spark 2.3.2

EN

回答 1

Stack Overflow用户

发布于 2019-05-18 00:04:47

这是我天真的解决方案:随机对多数类进行下采样。这种解决方案的缺点是丢失了信息,并且不适用于小数据集。

代码语言:javascript
代码运行次数:0
运行
复制
val resampledTrainDF = {

    val positiveLabel = "1"
    val trainDF_positives = trainDF.where(F.col(label) === positiveLabel)
    val trainDF_negatives = trainDF.where(F.col(label) =!= positiveLabel)

    val withReplacement = trainDF_positives.count >= trainDF_negatives.count

    if (withReplacement) {
        // downsampling positives
        val sampSize = math.round(  (1.0 * trainDF_negatives.count / trainDF_positives.count) * 1000) / 1000.0
        println("Downsampling Positives by " + (1 - sampSize)*100 + " %")
        trainDF_positives.sample(false, sampSize).union(trainDF_negatives)
    } else { 
        //downsampling negatives
        val sampSize = math.round(  (1.0 * trainDF_positives.count / trainDF_negatives.count) * 1000) / 1000.0
        println("Downsampling Negatives by " + (1 - sampSize)*100 +  "%")
        trainDF_negatives.sample(false, sampSize).union(trainDF_positives)
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56187405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档