knn et validation croisée sur données iris
data(iris)
n <- 100
x <- scale(iris[1:n,1:2])
y <- as.numeric(iris[1:n,5])-1
fisher <- data.frame(y=as.factor(y),x1=x[,1],x2=x[,2])
summary(fisher)
library(caret)
# EVALUATION DE L'ERREUR DE CLASSIFICATION SANS VALIDATION CROISEE
# POUR k=1
model.knn <- knn3(y~x1+x2,data=fisher,k=1)
mean(predict(model.knn,fisher,type="class")!=y)
# EVALUATION DE L'ERREUR DE CLASSIFICATION AVEC VALIDATION CROISEE
# A 2 ENSEMBLES REPETEE 100 FOIS POUR k=1
model.knn <- train(y~x1+x2,data=fisher,method="knn",metric="Sensitivity",
trControl=trainControl(method="repeatedcv",number=2,repeats=100),
tuneGrid=data.frame(k=c(1,3,5,7)))
# CHOIX PAR VALIDATION CROISEE A 2 ENSEMBLES REPETEE 100 FOIS
# DE LA MEILLEURE VALEUR DE k
tune.knn <- train(y~x1+x2,data=fisher,method="knn",metric="Accuracy",
trControl=trainControl(method="repeatedcv",number=5,repeats=100),
tuneGrid=data.frame(k=seq(1,49,by=2)))
plot(tune.knn)
print(tune.knn)