如何从 Weka 中的数据集中删除百分比但保持 class 平衡?

How to remove a percentage from a dataset in Weka but keep the class balance?

我有一个数据集,其中 50% 的实例来自 class A,50% 的实例来自 class B。我想将我的数据集分成训练集和测试集。我知道存在 RemovePercentage 过滤器,但它不关心 class 余额。如何从我的数据集中删除 35%,但在训练集中仍保持 50/50 class 分布?

看看分层去除褶皱。它努力保持原始的 class 发行版。 http://weka.sourceforge.net/doc.stable/weka/filters/supervised/instance/StratifiedRemoveFolds.html

好的,我找到了使用过滤器 StratifiedRemoveFolds 的方法:

步骤 1

在 Weka Explorer 中打开您的数据集并选择监督实例过滤器 StratifiedRemoveFolds。

步骤 2

决定你想要的训练集和测试集的大小。如果您希望您的集合大小相同,请选择 numFolds 2. 应用过滤器。这将生成一个数据集,其中包含原始集中 50% 的数据。 (如果你想要 67% 的训练数据和 33% 的测试数据,那么为 numFolds 选择 3)

步骤 3

将此生成的集合保存为 f.e。 "train.arff"。保存第一组后,您必须撤消操作,以便返回完整数据集。

步骤 4

单击 StratifiedRemoveFolds 过滤器并将参数 invertSelection 从 False 更改为 True。现在,当您应用该过滤器时,将像步骤 2 中那样生成一个集合,但它将包含数据集的其他 50%。

步骤 5

将其另存为“test.arff**。现在你有一个符合你的class平衡的训练和测试集。