如何在 Weka 中对训练和测试数据集进行分类

How to perform classification on training and test dataset in Weka

我正在使用 Weka 软件对模型进行分类。我对使用训练和测试数据集分区感到困惑。我将整个数据集的 60% 作为训练数据集,并将其保存到我的硬盘中,并将 40% 的数据作为测试数据集,并将这些数据保存到另一个文件中。我使用的数据是不平衡数据。所以我在我的训练数据集中应用了 SMOTE。之后,在 Weka 的分类选项卡中,我从 Test options 中选择 Use training set 选项,并使用随机森林分类器对训练数据集进行分类。得到结果后,我从 Test options 中选择了 Supplied test set 选项,并从硬盘加载我的测试数据集,然后再次 运行 分类器。

我试图找到有关如何在 Weka 中加载训练集和测试集的教程,但没有找到。上面的过程是我自己理解的。

因此,我想知道对训练和测试数据集进行分类的正确方法是什么?

谢谢。

没有必要在训练集上评估你的分类器(这会过于乐观,因为分类器已经看到了这个数据)。只需使用 Supplied test set 选项,然后您的分类器将在当前加载的数据集上自动训练,然后再在指定的测试集上进行评估。

除了手动拆分数据,您还可以使用 Percentage split 测试选项,其中 60% 用于训练数据。

使用过滤器时,您应该始终将它们(在本例中为 SMOTE)和分类器(在本例中为 RandomForest)包装在 FilteredClassifier 元分类器中。这样,您将确保训练和测试集数据得到正确转换。这也将避免在使用监督过滤器转换完整数据集并随后将数据集拆分为 train/test 时将信息泄漏到测试集中的问题。最后,它还很好地记录了对输入数据进行的预处理,所有这些都在一个命令行字符串中。

如果您需要应用多个过滤器,请使用 MultiFilter 按顺序应用它们。