首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Weka重采样以平衡二进制数据集中的实例

Weka重采样以平衡二进制数据集中的实例
EN

Stack Overflow用户
提问于 2014-11-16 16:00:13
回答 1查看 2.6K关注 0票数 0

我只使用了Weka几个星期,但我完全被它是多么伟大的震撼!

但是我有一个问题,我有一个包含目标列的数据集,它要么是正确的,要么是假的。

我的数据集中有6709个实例是真实例

25318个实例是错误的。

我希望随机添加我的True实例的副本,以生成一个包含25318 True和25318 False的新数据集。

我唯一能找到的过滤器,这是监督重采样过滤器,然而,我有困难,了解哪些参数,我应该使用。

(可能有一个更好的过滤器来做我想做的事)

我在这些参数上取得了一些成功

代码语言:javascript
复制
biasToUniformClass = 1.0
invertSelection = False
noReplacement = False
randomSeed = 1
sampleSizePercent = 157.5 (a magic number I've arrived at by trial and error)

这会产生25277正确和25165假。不完全是我想要的,但很接近。

问题是我想不出如何才能得到这个神奇的数字。我也没有得到我真正想要的实例的确切数量。

是否有更好的过滤器用于这一目的?如果没有,是否有方法计算sampleSizePercent幻数?

任何帮助都是非常感谢的:)

补充问题:我是否最好在布尔列上运行NominalToBinary以确保它们是二进制的?我正在使用NaiveBayes分类器(目前),并且没有任何缺少的实例。

杰森

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-17 23:26:09

我认为这个问题的棘手之处在于使用重采样过滤器来获得完美的平衡。这是因为,正如描述中所述,它“使用有替换的抽样或不替换的采样生成数据集的随机子样本”。如果这些情况是随机抽取的,则不能保证在这两个类之间得到一个相等的度量。

至于魔术数字,这将与应用筛选器时希望使用的情况总数相关联。在你的例子中,是50636而不是32027。在这种情况下,神奇的数字是50636 / 32027 = 1.581。但是,正如上面所述,您可能无法得到真假的精确匹配。

如果您确实需要一个确切的数字,您可以使用您最喜欢的电子表格和预处理数据。一种可能的方法是将真实案例随机化(在一个单独的列中),对所有案例进行排序和复制,直到数字与假情况匹配为止。这不是一个自动化的解决方案,而且解决方案在Weka之外,但我以前使用过这种方法,并且相当快地完成了这项工作。

希望这能帮上忙!

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

https://stackoverflow.com/questions/26958926

复制
相关文章

相似问题

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