function(data, repet,method=c("entropy","chiMerge")) { #Esta funcion encuentra la estimacion del error de clasificacion # por validacion cruzada 10 del clasificador Naive Bayes # Requiere la funcion naiveBayes de la libreria e1071 #inputs: # data: the name of the dataset # repet: the number of repetitions #------------------------------------------ require(e1071) require(dprep) n <- dim(data)[1] p <- dim(data)[2] if(method=="entropy") {data=disc.mentr(data,1:p)} if(method=="chiMerge") {data=chiMerge(data,1:(p-1))} for(i in 1:p) {data[,i]=as.factor(data[,i])} nombres<-colnames(data) f1<-as.formula(paste(nombres[p],".",sep="~")) #print(f1) ECV <- rep(0, repet) for(i in 1:repet) { salida <- matrix(0, 1, 10) azar <- data[rank(runif(n)), ] azar[, p] <- as.factor(azar[, p]) parti <- floor(n/10) for(j in 1:10) { cc <- ((j - 1) * parti + 1):(j * parti ) if(j == 10) { cc <- ((j - 1) * parti + 1): n } datap <- azar[cc, ] datat <- azar[ - cc, ] tempo =naiveBayes(f1,data=datat) tempo1=predict(tempo,datap[,-p]) salida[j] <- sum(tempo1 != as.numeric(datap[, p])) } ECV[i] <- sum(salida)/n } cat("The error estimations in each repetition are:\n" ) print(ECV) ECV1 <- mean(ECV) cat("The mean error estimation by cross-validation using alll the repetititons is: \n" ) ECV1 }