【问题标题】:How to remove a percentage from a dataset in Weka but keep the class balance?如何从 Weka 的数据集中删除百分比但保持类平衡?
【发布时间】:2017-10-10 10:56:24
【问题描述】:

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

【问题讨论】:

    标签: machine-learning weka training-data statistical-sampling


    【解决方案1】:

    好的,我找到了使用过滤器 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**”。现在您拥有了一个尊重您的班级平衡的训练和测试集。

    【讨论】:

    • 需要注意的是,如果 numFolds 设置为 n(其中 n != 2),则第一个过滤数据集包含原始数据的 1/n,应为命名为“test.arff”。
    【解决方案2】:

    看看分层删除折叠。它努力保持原始的类分布。 http://weka.sourceforge.net/doc.stable/weka/filters/supervised/instance/StratifiedRemoveFolds.html

    【讨论】:

    • 它可以使用 Stratified Remove Folds 生成测试集,但这些实例并未从整个数据集中删除,因此我的训练集仍然具有来自测试集的实例。
    猜你喜欢
    • 2017-03-17
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 2013-08-26
    • 2017-07-27
    • 1970-01-01
    相关资源
    最近更新 更多