【发布时间】:2017-10-10 10:56:24
【问题描述】:
我有一个数据集,其中 50% 的实例来自 A 类,50% 的实例来自 B 类。我想将我的数据集拆分为训练集和测试集。我知道 RemovePercentage 过滤器存在,但它不关心类平衡。如何从我的数据集中删除 35%,但在训练集中仍保持 50/50 的类分布?
【问题讨论】:
标签: machine-learning weka training-data statistical-sampling
我有一个数据集,其中 50% 的实例来自 A 类,50% 的实例来自 B 类。我想将我的数据集拆分为训练集和测试集。我知道 RemovePercentage 过滤器存在,但它不关心类平衡。如何从我的数据集中删除 35%,但在训练集中仍保持 50/50 的类分布?
【问题讨论】:
标签: machine-learning weka training-data statistical-sampling
好的,我找到了使用过滤器 StratifiedRemoveFolds 的方法:
第 1 步
在 Weka Explorer 中打开您的数据集,然后选择监督实例过滤器 StratifiedRemoveFolds。
第 2 步
为您的训练集和测试集确定所需的大小。如果您希望您的集合具有相同的大小,请选择 numFolds 2. 应用过滤器。这将生成一个数据集,其中包含来自原始集的 50% 的数据。 (如果您想要 67 % 的训练数据和 33 % 的测试数据,则为 numFolds 选择 3)
第 3 步
将此生成的集合保存为 f.e. “火车.arff”。保存第一组后,您必须撤消操作,以便返回完整的数据集。
第 4 步
单击 StratifiedRemoveFolds 过滤器并将参数 invertSelection 从 False 更改为 True。现在,当您应用该过滤器时,将像第 2 步一样生成一个集合,但它将包含其他 50% 的数据集。
第 5 步
将其保存为“test.arff**”。现在您拥有了一个尊重您的班级平衡的训练和测试集。
【讨论】:
【讨论】: