Java WEKA使用KNN和不同的K值进行交叉验证的结果相同
我正在使用WEKAAPI使用KNN(IBk)分类器对数据集执行10倍交叉验证。我已经为K选择了一些值,并编写了一些简单的循环,为每个K值执行CV 当我查看结果时,我注意到即使使用不同的K值,所有结果都是相同的。这怎么可能?为了澄清,我添加了一行代码,在其中我指定了输入到分类器的选项。当我进行正常分类时,这种方法非常有效(因此没有交叉验证) 如您所见,我在每次迭代中都会更改Java WEKA使用KNN和不同的K值进行交叉验证的结果相同,java,machine-learning,nlp,weka,Java,Machine Learning,Nlp,Weka,我正在使用WEKAAPI使用KNN(IBk)分类器对数据集执行10倍交叉验证。我已经为K选择了一些值,并编写了一些简单的循环,为每个K值执行CV 当我查看结果时,我注意到即使使用不同的K值,所有结果都是相同的。这怎么可能?为了澄清,我添加了一行代码,在其中我指定了输入到分类器的选项。当我进行正常分类时,这种方法非常有效(因此没有交叉验证) 如您所见,我在每次迭代中都会更改k_值。请帮帮我 EDIT1 一些可能有帮助的附加代码 Evaluation evaluation = new Eva
k_值。请帮帮我
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_值
而是将其替换为硬编码值(此处为10):
classification.setOptions(“-K10-W 0-I-A\”weka.core.neightursearch.linearnsearch-A\\”weka.core.EuclideanDistance-R first-last\\”)
再次,我得到了和以前完全相同的结果,当用不同的K值执行它时。这怎么会发生呢?事情就是这样的吗?这在weka是正常的吗?这里没人能帮我吗?我真的调查了所有的事情,没有什么是“错误的”。当我在不执行交叉验证时指定不同的K值时,一切正常。但是在这个场景中,我总是得到每个K的相同结果。为什么?你能告诉我们一些关于数据集的信息吗?你尝试了什么样的k值?(K是邻居的数量,而不是CV折叠的数量)
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));