运行 weka 自动对 arff 文件进行多个分类

Run multiple classifiers on arff files in weka automatically

我必须 运行 weka 中的许多 arff 文件,并且对于每个文件我必须 运行 多个分类器 - MLP、RandomForest、FURIA 等,每个都有不同的测试选项,并存储他们的每一个结果。手动完成每个操作非常耗时。我正在寻找一些方法,或者一些可以自动执行该过程的脚本。 我必须承认我是机器学习的新手,对脚本编写一无所知。我发现了这个- https://sites.google.com/site/svaisipour/utilities/cs-for-biologist/weka-runner ,虽然我在这里了解了如何操作分类器,但我无法理解如何将测试选项从交叉验证更改为百分比拆分。

请告诉我任何可能对我有帮助的方法。任何帮助将不胜感激。

如果您有信心从您自己的 Java 代码中 运行 Weka,您可以创建一个包含您选择的分类器和文件的数组,并循环遍历它们进行测试。代码将是这样的(对于训练和测试之间的 80/20 分割):

    String[] filePaths = {"/some/data1.arff", "/some/data2.arff", "/some/data3.arff"};
    for (String path : filePaths) {
        DataSource source = new DataSource(path);
        Instances data = source.getDataSet();
        if (data.classIndex() == -1) {
            data.setClassIndex(data.numAttributes() - 1);
        }

        data.randomize(new java.util.Random(0));
        int trainSize = (int) Math.round(data.numInstances() * 0.8);
        int testSize = data.numInstances() - trainSize;
        Instances train = new Instances(data, 0, trainSize);
        Instances test = new Instances(data, trainSize, testSize);

        Classifier[] classifiers = {new NaiveBayes, new J48, new MultilayerPerceptron};

        for (Classifier c : classifiers) {
            Classifier cls = c;
            cls.buildClassifier(train);
            Evaluation eval = new Evaluation(train);
            eval.evaluateModel(cls, test);
            System.out.println(eval.toSummaryString("\nResults\n======\n", false));
        }
    }

您可以从命令行 运行 Weka。您首先需要将 Weka.jar 添加到类路径中。然后就可以通过命令行开始读取文件,运行ning过滤器,分类器等。您可以从 Weka Primer 轻松入门。

例如,您可以使用以下命令运行 randomForest:

java weka.classifiers.trees.RandomForest -I 10 -S 1 -t data.arff -x 10

其中:

-I <number of trees> Specifies the number of trees to build.
-S <seed number>  Specifies the seed for random number generator.
-t <name of training file> Sets training file.
-x <number of folds> Sets number of folds for cross-validation   

您可以找到详细的规范here

如果你想使用拆分百分比而不是交叉验证,你只需替换

-x <number of folds> 

-split-percentage <percentage>

或者,您可以通过 -T:

指定单独的测试集
-T <name of test file> Sets test file. 

如果您 运行 按照说明执行命令,结果将打印在命令行中。如果你想将它们保存在一个单独的文件中,你可以按照建议 here

您可以为此使用 Weka Experimenter GUI。

接下来会出现一个大对话框。

要使用多种算法进行 运行 实验,您必须单击那里的 "New" 按钮,然后...哦,好吧,...这个 video about the experimenter 会得到您开始了。