我尝试使用r中的遗传算法来优化knn中的参数k。我使用以下代码尝试了此操作,但仍然收到错误。 我根据所选的k值将knn的精度用作适应度函数。如果您了解knn和遗传算法,请帮助我。这就是我所做的。
Something is wrong; all the Accuracy metric values are missing:
Accuracy Kappa
Min. : NA Min. : NA
1st Qu.: NA 1st Qu.: NA
Median : NA Median : NA
Mean :NaN Mean :NaN
3rd Qu.: NA 3rd Qu.: NA
Max. : NA Max. : NA
NA's :1 NA's :1
Error: Stopping
In addition: There were 11 warnings (use warnings() to see them)
错误:
<div class="container">
<div class="row">
<div class="col-xs-4">col 1</div>
<div class="col-xs-3 col-custom">
<div class="pull-right">col 2</div>
<!-- data-container="body" data-placement="top" -->
<i class="fa fa-info-circle fa-lg m-t-xl" aria-hidden="true" data-toggle="tooltip" title="Lorem ipsum dolor sit amet, consectetur adipiscing elit."></i>
</div>
<div class="col-xs-5">col 3</div>
</div>
</div>
如果您能帮助我,我将不胜感激。谢谢
答案 0 :(得分:1)
我认为问题不在于您的代码,而在于方法:在这种情况下,不可能并且也没有必要使用遗传算法来优化k
。
您致电ga(type = "real-valued", lower = -10, upper = 10, ...)
表示ga
将在-10和10之间搜索最佳值。现在有两个问题:
k
的负值是不可能的ga
将产生非整数值,例如k为1.234,这当然也是不可能的幸运的是,在这种情况下,不必使用诸如遗传算法之类的复杂方法。如果要在[1,10]范围内找到最好的k
,只需为每个值计算模型,如下所示:
k_cands <- 1:10
accuracy <- numeric()
for(k in k_cands) {
[compute model with k]
accuracy <- c(accuracy, model$results$accuracy)
}
best_k <- k_cands[which.max(accuracy)]