library(RSNNS) library(data.table) set.seed(1) #CARGA DE DATOS trainSet <- data.table(read.csv("DatosTrain.csv",dec=",",sep=";",header = T)) validSet <- data.table(read.csv( "DatosTest.csv",dec=",",sep=";",header = T)) testSet <- data.table(read.csv("DatosValid.csv",dec=",",sep=";",header = T)) #ELECCION DEL OBJETIVO target <- "salida" #SELECCION DE LOS PARAMETROS topologia <- c(20) razonAprendizaje <- 0.01 ciclosMaximos <- 200 #EJECUCION DEL APRENDIZAJE Y GENERACION DEL MODELO model <- mlp(x= trainSet[,-target,with=F], y= trainSet[,target,with=F], inputsTest= validSet[,-target,with=F], targetsTest= validSet[,target,with=F], size= topologia, maxit=ciclosMaximos, learnFuncParams=c(razonAprendizaje), shufflePatterns = F ) #GRAFICO DE LA EVOLUCION DEL ERROR plotIterativeError(model) RMSE <- function(pred,obs) (sum((pred - obs)^2) / length(obs)) ^ (1/2) #VECTOR DE LOS ERRORES errors <- c(TrainRMSE= RMSE(pred= predict(model,trainSet[,-target,with=F]),obs= trainSet[,target,with=F]), ValidRMSE= RMSE(pred= predict(model,validSet[,-target,with=F]),obs= validSet[,target,with=F]), TestRMSE= RMSE(pred= predict(model,testSet[,-target,with=F]) ,obs= testSet[,target,with=F])) #TABLA CON LOS ERRORES POR CICLO iterativeErrors <- data.table(RMSETrain= (model$IterativeFitError/nrow(trainSet)) ^(1/2), RMSEValid= (model$IterativeTestError/nrow(validSet))^(1/2)) #SALIDAS DE LA RED outputs <- data.table(train= predict(model,trainSet[,-target,with=F]), valid= c(predict(model,validSet[,-target,with=F]),rep(NA,nrow(trainSet)-nrow(validSet))), test= c(predict(model,testSet[,-target,with=F] ),rep(NA,nrow(trainSet)-nrow(testSet)))) colnames(outputs) <- c("train","validation","test") #GUARDADO DE RESULTADOS saveRDS(model,"nnet.rds") write.csv2(errors,"finalErrors.csv") write.csv2(iterativeErrors,"iterativeErrors.csv") write.csv2(outputs,"netOutputs.csv")