我有一个数据集,其中 50% 的实例来自 A 类,50% 的实例来自 B 类。我想将我的数据集拆分为训练集和测试集。我知道 RemovePercentage 过滤器存在,但它不关心类平衡。如何从我的数据集中删除 35%,但仍然在训练集中保持 50/50 的类分布?
2 回答
看看分层删除折叠。它努力保持原始的类分布。 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 步
将此生成的集合保存为 fe "train.arff"。保存第一组后,您必须撤消操作,以便您返回完整的数据集。
第4步
单击 StratifiedRemoveFolds 过滤器并将参数invertSelection从 False 更改为 True。现在,当您应用该过滤器时,将像第 2 步一样生成一个集合,但它将包含其他 50% 的数据集。
第 5 步
将其另存为“test.arff**”。现在您拥有了一个尊重您的班级平衡的训练和测试集。