{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"library(neuralnet)\nlibrary(ggplot2)\nlibrary(dplyr)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train <- read.csv(file=\"../input/aptos2019-blindness-detection/train.csv\", header=TRUE)\ntest <- read.csv(file=\"../input/aptos2019-blindness-detection/test.csv\", header=TRUE)\nsummary(train)\nsummary(test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"library(readxl)\ntest=read.csv(\"../input/aptos2019-blindness-detection/train.csv\")\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#leyendo los datos \ninstall.packages(\"readxl\")\nlibrary(readxl)\ntrain=read.csv(\"../input/aptos2019-blindness-detection/train.csv\")\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"install.packages(\"neuralnet\")\nlibrary(neuralnet)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"library(\"neuralnet\")\n\n#------------------------------- Modelo Redes Neuronales --------------------------------#\n#Se agrega una columna para que ambos datasets sean del mismo tamaño\ntest$diagnosis<- -1\n\n#------------------------------- Modelo Redes Neuronales --------------------------------#\n#Se crean sub dataframes con menos datos puesto que las variables tardan bastante tiempo en calcularse\nind <- sample((1:1928), 1000)\nsampleTrain <- train[ind,]\n\n#se toman todos los nombres de las columnas y se ingresan como funcion en la redneuronal\nnombres<-colnames(sampleTrain[2])\nnombresEnFormula<-paste(nombres,collapse = \"+\")\n\n#se calcula la red neuronal con 5 neuronas\nform=as.formula(paste(\"id_code~\",nombresEnFormula,collapse=\"+\"))\nRedNeuronal <- neuralnet(formula =  form,\n                         data = sampleTrain, hidden = 5)\n\n#se parte el dataset de test de la misma forma que el train, asi se puede comparar resultados obtenidos\nsampleTest <- test[ind,]\n\n#se realiza la prediccion\nRedResultados <- compute(RedNeuronal,sampleTest)\n\n#se crea una tabla para visualizar los resultados.\nTablaResultados <- data.frame(actual = sampleTrain$id_code, prediccion = RedResultados$net.result)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"library(\"h2o\")\nlibrary(\"readr\")\nlibrary(\"caret\")\nlibrary(\"Matrix\")\n\n\n## start a local h2o cluster\nH2O = h2o.init(max_mem_size = '6g', nthreads = -1)\n#Usar 6GB de RAM y usar todas los núcleos posibles de la CPU\n\n#Conventir train y test a formato h2o y se prepara el modelo\ntrain[,1] = as.factor(train[,1])\n#Se convierten a factores para clasificación\ntrain_h2o = as.h2o(train)\ntest_h2o = as.h2o(test)\n\n#Se toma el tiempo para determinar efectividad\ns <- proc.time()\n\n#Se entrena el modelo, ya que tiene muchos argumentos, se separan en líneas\nmodel = \n  h2o.deeplearning(x = 2,  #Número de columnas para predecir \n                   y = 1,   #Número de columna para el label\n                   training_frame = train_h2o, #Los datos en formato h2o\n                   activation = \"RectifierWithDropout\", #Algoritmo a utilizar\n                   input_dropout_ratio = 0.2,\n                   hidden_dropout_ratios = c(0.5,0.5),\n                   balance_classes = TRUE, \n                   hidden = c(100,100), #Dos layers de 100 nodos\n                   momentum_stable = 0.99,\n                   nesterov_accelerated_gradient = T, #Se utiliza para agilizar el algoritmo\n                   epochs = 15)\n\n#Se imprime la matriz de confusión\nh2o.confusionMatrix(model)\n\n#Se imprime el tiempo pasado\ns - proc.time()\n\n#Se predicen los datos y se guarda el resultado\n#Clasificar el modelo de test\nh2o_y_test <- h2o.predict(model, test_h2o)\n\n#Para leer los resultados, convertir formato H2O format a data frame y guardar como csv\ndf_y_test = as.data.frame(h2o_y_test)\ndf_y_test = data.frame(ImageId = seq(1,length(df_y_test$predict)), Label = df_y_test$predict)\nwrite.csv(df_y_test, file = \"DeepLearning.csv\", row.names=F)\n\n#Se apaga el cluster virtural de h2o para continuar trabajando\nh2o.shutdown(prompt = F)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"R","language":"R","name":"ir"},"language_info":{"mimetype":"text/x-r-source","name":"R","pygments_lexer":"r","version":"3.4.2","file_extension":".r","codemirror_mode":"r"}},"nbformat":4,"nbformat_minor":1}