Una Red Neuronal Artificial (ANN) modela la relación entre un conjunto de entradas y una salida, resolviendo un problema de apredizaje.
Ejemplos prácticos de aplicación de Redes Neuronales son:
#install.packages("neuralnet")
library(neuralnet)
examen <- c(20,10,30,20,80,30)
proyecto <-c(90,20,40,50,50,80)
estatus <- c(1,0,0,0,0,1)
df <- data.frame(examen,proyecto,estatus)
red_neuronal <- neuralnet(estatus~.,data=df)
plot(red_neuronal, rep="best")
# Predecir con la red neuronal
set.seed(123)
prueba_examen <- c(30,40,85)
prueba_proyecto <- c(85,50,40)
prueba <- data.frame(prueba_examen,prueba_proyecto)
prediccion <- compute(red_neuronal,prueba)
prediccion$net.result
## [,1]
## [1,] 0.3993807
## [2,] 0.3993807
## [3,] -0.4420136
probabilidad <- prediccion$net.result
resultado <- ifelse(probabilidad > 0.5, 1, 0)
resultado
## [,1]
## [1,] 0
## [2,] 0
## [3,] 0
cancer <- read.csv("/Users/RigobertoGB/Desktop/Inteligencia Artificial con Impacto Empresarial/M2/Base de datos/cancer_de_mama.csv")
# M = 1 y B = 0
cancer$diagnosis_factor <- factor(ifelse(cancer$diagnosis == "M", 1, 0),
levels = c(0, 1))
#Normalmente 80-20
library(lattice)
library(caret)
## Loading required package: ggplot2
set.seed(123) # para reproducibilidad
renglones_entrenamiento <- createDataPartition(cancer$diagnosis_factor, p=0.8, list=FALSE)
entrenamiento <- cancer[renglones_entrenamiento, ]
prueba_cancer <- cancer[-renglones_entrenamiento, ]
entrenamiento <- subset(entrenamiento, select = -diagnosis)
red_neuronal2 <- neuralnet(diagnosis_factor~.,data=entrenamiento)
plot(red_neuronal2, rep="best")
prediccion2 <- compute(red_neuronal2,prueba_cancer)
prediccion2$net.result
## [,1] [,2]
## 13 0.6272036 0.3727860
## 14 0.6272036 0.3727860
## 15 0.6272036 0.3727860
## 17 0.6272036 0.3727860
## 22 0.6272036 0.3727860
## 26 0.6272036 0.3727860
## 30 0.6272036 0.3727860
## 45 0.6272036 0.3727860
## 46 0.6272036 0.3727860
## 49 0.6272036 0.3727860
## 51 0.6272036 0.3727860
## 62 0.6272036 0.3727860
## 68 0.6272036 0.3727860
## 69 0.6272036 0.3727860
## 71 0.6272036 0.3727860
## 84 0.6272036 0.3727860
## 89 0.6272036 0.3727860
## 96 0.6272036 0.3727860
## 100 0.6272036 0.3727860
## 109 0.6272036 0.3727860
## 118 0.6272036 0.3727860
## 120 0.6272036 0.3727860
## 130 0.6272036 0.3727860
## 132 0.6272036 0.3727860
## 134 0.6272036 0.3727860
## 138 0.6272036 0.3727860
## 141 0.6272036 0.3727860
## 144 0.6272036 0.3727860
## 147 0.6272036 0.3727860
## 148 0.6272036 0.3727860
## 151 0.6272036 0.3727860
## 162 0.6272036 0.3727860
## 163 0.6272036 0.3727860
## 166 0.6272036 0.3727860
## 169 0.6272036 0.3727860
## 173 0.6272036 0.3727860
## 189 0.6272036 0.3727860
## 204 0.6272036 0.3727860
## 213 0.6272032 0.3727834
## 217 0.6272036 0.3727860
## 229 0.6272036 0.3727860
## 233 0.6272036 0.3727860
## 240 0.6272036 0.3727860
## 245 0.6272036 0.3727860
## 247 0.6272036 0.3727860
## 248 0.6272036 0.3727860
## 258 0.6272036 0.3727860
## 260 0.6272036 0.3727860
## 265 0.6272036 0.3727860
## 267 0.6272036 0.3727860
## 269 0.6272036 0.3727860
## 270 0.6272036 0.3727860
## 278 0.6272036 0.3727860
## 280 0.6272036 0.3727860
## 282 0.6272036 0.3727860
## 283 0.6272036 0.3727860
## 284 0.6272036 0.3727860
## 285 0.6272036 0.3727860
## 289 0.6272036 0.3727860
## 291 0.6272036 0.3727860
## 293 0.6272036 0.3727860
## 294 0.6272036 0.3727860
## 295 0.6272036 0.3727860
## 319 0.6272036 0.3727860
## 324 0.6272036 0.3727860
## 335 0.6272036 0.3727860
## 336 0.6272036 0.3727860
## 348 0.6272036 0.3727860
## 350 0.6272036 0.3727860
## 351 0.6272036 0.3727860
## 353 0.6272036 0.3727860
## 362 0.6272036 0.3727860
## 365 0.6272036 0.3727860
## 366 0.6272036 0.3727860
## 368 0.6272036 0.3727860
## 376 0.6272036 0.3727860
## 385 0.6272036 0.3727860
## 394 0.6272036 0.3727860
## 395 0.6272036 0.3727860
## 400 0.6272036 0.3727860
## 402 0.6272036 0.3727860
## 407 0.6272036 0.3727860
## 409 0.6272036 0.3727860
## 412 0.6272036 0.3727860
## 414 0.6272036 0.3727860
## 417 0.6272036 0.3727860
## 423 0.6272036 0.3727860
## 424 0.6272036 0.3727860
## 436 0.6272036 0.3727860
## 439 0.6272036 0.3727860
## 445 0.6272036 0.3727860
## 457 0.6272036 0.3727860
## 474 0.6272036 0.3727860
## 477 0.6272036 0.3727860
## 481 0.6272036 0.3727860
## 487 0.6272036 0.3727860
## 495 0.6272036 0.3727860
## 497 0.6272036 0.3727860
## 508 0.6272036 0.3727860
## 509 0.6272036 0.3727860
## 510 0.6272036 0.3727860
## 512 0.6272036 0.3727860
## 514 0.6272036 0.3727860
## 520 0.6272036 0.3727860
## 525 0.6272036 0.3727860
## 533 0.6272036 0.3727860
## 541 0.6272036 0.3727860
## 543 0.6272036 0.3727860
## 550 0.6272036 0.3727860
## 551 0.6272036 0.3727860
## 556 0.6272036 0.3727860
## 559 0.6272036 0.3727860
## 565 0.6272036 0.3727860
probabilidad2 <- prediccion2$net.result
resultado2 <- ifelse(probabilidad2 > 0.5, 1, 0)
#resultado2