WEKA使用KNN进行交叉验证并且K的值不同,结果相同

时间:2014-04-05 15:27:10

标签: java machine-learning nlp weka

我正在使用WEKA API使用KNN(IBk)分类器对我的数据集执行10倍交叉验证。我为K选择了一些值,并编写了一些简单的循环,为每个这样的K值执行CV。

当我查看结果时,我注意到即使我使用不同的K值,所有结果都是相同的。这怎么可能?为了澄清,我添加了代码行,我指定了我提供给分类器的选项。当我进行正常分类(因此没有交叉验证)时,这非常有效。

"-K " + k_value + " -W 0 -I -A \"weka.core.neighboursearch.LinearNNSearch -A \\\"weka.core.EuclideanDistance -R first-last\\\"\""

正如您所看到的,我在每次迭代中都更改了k_value。请帮忙!

EDIT1 一些额外的代码可能会有所帮助。

    Evaluation evaluation = new Evaluation(dataset);
    evaluation.crossValidateModel(knn, dataset, 10, new Random(1), new Object[] {});
    System.out.println("Error-rate " + evaluation.errorRate());
    writer.println("AUROC: " + evaluation.areaUnderROC(0));
    writer.println(evaluation.toClassDetailsString());
    writer.println(evaluation.toMatrixString());
    writer.println(evaluation.toSummaryString("\nResults\n======\n", true));

EDIT2 我没有用k_value代替硬编码值(这里是10):

classification.setOptions(" -K 10 -W 0 -I -A \" weka.core.neighboursearch.LinearNNSearch -A \\" weka。 core.EuclideanDistance -R first-last \\" \"");

同样,我使用不同的K值执行与之前完全相同的结果。这怎么可能发生?这是怎么回事?这在weka中是正常的吗?

0 个答案:

没有答案