Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java WEKA使用KNN和不同的K值进行交叉验证的结果相同_Java_Machine Learning_Nlp_Weka - Fatal编程技术网

Java WEKA使用KNN和不同的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

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

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

如您所见,我在每次迭代中都会更改
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));