我必须在weka中运行许多arff文件,并且对于它们中的每一个,我必须运行多个分类器 - MLP,RandomForest,FURIA等,每个都有不同的测试选项,并存储每个结果。手动执行每个操作非常耗时。我正在寻找一些方法,或一些可以自动化该过程的脚本。 我必须承认我是机器学习的新手,并且不了解脚本。我找到了这个 - https://sites.google.com/site/svaisipour/utilities/cs-for-biologist/weka-runner,虽然我知道如何在这里操作分类器,但是我无法理解如何将测试选项从交叉验证更改为百分比分割。
请告诉我任何可能对我有帮助的方法。任何帮助都将深表感谢。
答案 0 :(得分:1)
您可以使用Weka Experimenter GUI。
接下来会出现一个大对话框。
要使用多种算法进行运行实验,您必须单击那里的“新建”按钮,然后......哦,好吧......这个video about the experimenter将帮助您入门。
答案 1 :(得分:0)
如果您有信心从自己的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));
}
}
答案 2 :(得分:0)
您可以从命令行运行Weka。您首先需要将Weka.jar添加到classpath中。然后,您可以通过命令行开始读取文件,运行过滤器,分类器等。您可以轻松地从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
进行操作