Validation croisée crée des NA une ligne sur 2
Je souhaite faire une validation croisée avec knnVCN et la base de donnnées iris: je retire une ligne de ma base de données et je tente de la prédire à l'aide de knnVCN. Cependant cela me donne des NA une ligne sur deux et je ne comprends pas pourquoi. Voici mon code de validation croisée :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| install.packages("knnGarden")
install.packages("cluster")
#install.packages("e1071")
library(cluster)
library(knnGarden)
good<-0
for(i in 1:150){
test <- iris[i,]
train <- iris[-i,]
result <- knnVCN(train[,-5], train[,5], test, K = 3, ShowObs=T,"maximum")
print(result[i,5])
print(result[i,6])
if((result[i,5])==(result[i,6])){
good<-good+1
}
print("siguiente ?????????")
} |
Et la sortie est la suivante :
Code:
1 2 3 4 5 6 7 8 9
| [1] setosa
Levels: setosa
[1] setosa
Levels: setosa
[1] "siguiente ?????????"
[1] <NA>
Levels: setosa
[1] <NA>
Levels: setosa |
Les première lignes jusqu'a "siguiente" sont bien : le modèle prédise les bonnes classes. Cependant cela me donne des NA à partir de la seconde itération. Pouvez vous m'aider à obtenir les classes plutôt que les NA ?
Merci d'avance !