Teoría
Una Red Neuronal Artificial (ANN) modela la relación entre
un conjunto de entradas y una salida para resolver un problema de
aprendizaje. Ejemplos prácticos: reconocimiento de dígitos/letras
escritos a mano, clasificación de spam, predicción de incumplimiento de
pago, etc.
Instalar paquetes y llamar
librerías
#install.packages("neuralnet")
library(neuralnet)
library(dplyr)
library(ggplot2)
# Vectores (mismo largo)
examen <- c(20, 10, 30, 20, 80, 30)
proyecto <- c(90, 20, 40, 50, 50, 80)
estatus <- c( 1, 0, 0, 0, 0, 1) # 1 = aprueba, 0 = no aprueba (ejemplo)
df <- data.frame(examen, proyecto, estatus)
df
## examen proyecto estatus
## 1 20 90 1
## 2 10 20 0
## 3 30 40 0
## 4 20 50 0
## 5 80 50 0
## 6 30 80 1
# Entrenar la red
red_neuronal <- neuralnet(estatus ~ ., data = df, hidden = 3, linear.output = FALSE)
# Graficar la mejor red entrenada
plot(red_neuronal, rep = "best")

# <span style="color: blue"> Predecir con la Red Neuronal </span>
# Nuevos valores de entrada (ejemplos)
prueba_examen <- c(30, 40, 85)
prueba_proyecto <- c(85, 50, 40)
# Data frame con los valores de prueba
prueba <- data.frame(examen = prueba_examen,
proyecto = prueba_proyecto)
# Usar la red entrenada para predecir (forzando a usar neuralnet::compute)
prediccion <- neuralnet::compute(red_neuronal, prueba)
# Resultados de la red (probabilidades)
prediccion$net.result
## [,1]
## [1,] 0.9916883841
## [2,] 0.0003478685
## [3,] 0.0001150367
# Guardar probabilidades
probabilidad <- as.vector(prediccion$net.result)
# Clasificación final (1 si prob > 0.5, 0 en caso contrario)
resultado <- ifelse(probabilidad > 0.5, 1, 0)
resultado
## [1] 1 0 0
LS0tDQp0aXRsZTogIlJlZGVzIG5ldXJvbmFsZXMiDQphdXRob3I6ICJBbnRvbmlvIEPDoXJkZW5hcyBEdWFydGUgLSBBMDE1Njg5MDgiDQpkYXRlOiAiMjAyNS0wOC0yNSINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KICAgIHRoZW1lOiB5ZXRpDQotLS0NCg0KIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWUiPlRlb3LDrWE8L3NwYW4+DQpVbmEgKlJlZCBOZXVyb25hbCBBcnRpZmljaWFsIChBTk4pKiBtb2RlbGEgbGEgcmVsYWNpw7NuIGVudHJlIHVuIGNvbmp1bnRvIGRlIGVudHJhZGFzIHkgdW5hIHNhbGlkYSBwYXJhIHJlc29sdmVyIHVuIHByb2JsZW1hIGRlIGFwcmVuZGl6YWplLg0KRWplbXBsb3MgcHLDoWN0aWNvczogcmVjb25vY2ltaWVudG8gZGUgZMOtZ2l0b3MvbGV0cmFzIGVzY3JpdG9zIGEgbWFubywgY2xhc2lmaWNhY2nDs24gZGUgc3BhbSwgcHJlZGljY2nDs24gZGUgaW5jdW1wbGltaWVudG8gZGUgcGFnbywgZXRjLg0KDQotLS0NCg0KIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWUiPkluc3RhbGFyIHBhcXVldGVzIHkgbGxhbWFyIGxpYnJlcsOtYXM8L3NwYW4+DQpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KI2luc3RhbGwucGFja2FnZXMoIm5ldXJhbG5ldCIpDQpsaWJyYXJ5KG5ldXJhbG5ldCkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGdncGxvdDIpDQpgYGANCg0KDQpgYGB7cn0NCiMgVmVjdG9yZXMgKG1pc21vIGxhcmdvKQ0KZXhhbWVuICAgPC0gYygyMCwgMTAsIDMwLCAyMCwgODAsIDMwKQ0KcHJveWVjdG8gPC0gYyg5MCwgMjAsIDQwLCA1MCwgNTAsIDgwKQ0KZXN0YXR1cyAgPC0gYyggMSwgIDAsICAwLCAgMCwgIDAsICAxKSAgIyAxID0gYXBydWViYSwgMCA9IG5vIGFwcnVlYmEgKGVqZW1wbG8pDQoNCmRmIDwtIGRhdGEuZnJhbWUoZXhhbWVuLCBwcm95ZWN0bywgZXN0YXR1cykNCmRmDQoNCmBgYA0KYGBge3J9DQojIEVudHJlbmFyIGxhIHJlZA0KcmVkX25ldXJvbmFsIDwtIG5ldXJhbG5ldChlc3RhdHVzIH4gLiwgZGF0YSA9IGRmLCBoaWRkZW4gPSAzLCBsaW5lYXIub3V0cHV0ID0gRkFMU0UpDQoNCiMgR3JhZmljYXIgbGEgbWVqb3IgcmVkIGVudHJlbmFkYQ0KcGxvdChyZWRfbmV1cm9uYWwsIHJlcCA9ICJiZXN0IikNCmBgYA0KDQoNCmBgYHtyfQ0KIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWUiPiBQcmVkZWNpciBjb24gbGEgUmVkIE5ldXJvbmFsIDwvc3Bhbj4NCg0KIyBOdWV2b3MgdmFsb3JlcyBkZSBlbnRyYWRhIChlamVtcGxvcykNCnBydWViYV9leGFtZW4gICA8LSBjKDMwLCA0MCwgODUpDQpwcnVlYmFfcHJveWVjdG8gPC0gYyg4NSwgNTAsIDQwKQ0KDQojIERhdGEgZnJhbWUgY29uIGxvcyB2YWxvcmVzIGRlIHBydWViYQ0KcHJ1ZWJhIDwtIGRhdGEuZnJhbWUoZXhhbWVuID0gcHJ1ZWJhX2V4YW1lbiwNCiAgICAgICAgICAgICAgICAgICAgIHByb3llY3RvID0gcHJ1ZWJhX3Byb3llY3RvKQ0KDQojIFVzYXIgbGEgcmVkIGVudHJlbmFkYSBwYXJhIHByZWRlY2lyIChmb3J6YW5kbyBhIHVzYXIgbmV1cmFsbmV0Ojpjb21wdXRlKQ0KcHJlZGljY2lvbiA8LSBuZXVyYWxuZXQ6OmNvbXB1dGUocmVkX25ldXJvbmFsLCBwcnVlYmEpDQoNCiMgUmVzdWx0YWRvcyBkZSBsYSByZWQgKHByb2JhYmlsaWRhZGVzKQ0KcHJlZGljY2lvbiRuZXQucmVzdWx0DQoNCiMgR3VhcmRhciBwcm9iYWJpbGlkYWRlcw0KcHJvYmFiaWxpZGFkIDwtIGFzLnZlY3RvcihwcmVkaWNjaW9uJG5ldC5yZXN1bHQpDQoNCiMgQ2xhc2lmaWNhY2nDs24gZmluYWwgKDEgc2kgcHJvYiA+IDAuNSwgMCBlbiBjYXNvIGNvbnRyYXJpbykNCnJlc3VsdGFkbyA8LSBpZmVsc2UocHJvYmFiaWxpZGFkID4gMC41LCAxLCAwKQ0KcmVzdWx0YWRvDQoNCmBgYA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQo=