Red neuronal con Neuralnet en R

Objetivo:Este proyecto tiene como objetivo poner en práctica el entrenamiento de redes neuronales simples y comprender cómo influyen variables como edad, sexo y clase del pasajero en las probabilidades de sobrevivir al hundimiento del Titanic.

library(readr)
## Warning: package 'readr' was built under R version 4.4.3

Paso 2: Leemos el archivo CSV con los datos del Titanic ya traducido al español y exploramos rápidamente si hay valores faltantes (NA).

DatosTitanicEsp <- read_csv("C:/R/DatosTitanicEsp.csv")
## Rows: 891 Columns: 12
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): Nombre, Sexo, Ticket, Cabina, Puerto
## dbl (7): Numero, Vivio, ClasePasajero, Edad, Familiares, FamiliaDirecta, Costo
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
View(DatosTitanicEsp)
#sumar los NA'S por cada columna factor 
sum(is.na(DatosTitanicEsp$Vivio))
## [1] 0
sum(is.na(DatosTitanicEsp$Sexo))
## [1] 0
sum(is.na(DatosTitanicEsp$Edad)) # 177 con NA'S
## [1] 177
sum(is.na(DatosTitanicEsp$ClasePasajero))
## [1] 0

##Paso 3: Limpieza de datos La variable Edad es clave para el modelo, por lo tanto eliminamos las filas que no tengan este dato.

DatosTitanicEsp = DatosTitanicEsp[is.na(DatosTitanicEsp$Edad) == FALSE,] #quito NA'S
sum(is.na(DatosTitanicEsp$Edad))
## [1] 0
sum(is.na(DatosTitanicEsp$ClasePasajero))
## [1] 0

##*Paso 4: Preparar variables para el modelo Para entrenar la red, las variables categóricas deben estar en formato numérico. Aquí convertimos el sexo a formato binario:

0 para hombres

1 para mujeres*

#Comprobamos mujeres y niños primero
DatosTitanicEsp$Sexo[DatosTitanicEsp$Sexo == "male"]=0
DatosTitanicEsp$Sexo[DatosTitanicEsp$Sexo == "female"]=1
DatosTitanicEsp
## # A tibble: 714 × 12
##    Numero Vivio ClasePasajero Nombre       Sexo   Edad Familiares FamiliaDirecta
##     <dbl> <dbl>         <dbl> <chr>        <chr> <dbl>      <dbl>          <dbl>
##  1      1     0             3 Braund, Mr.… 0        22          1              0
##  2      2     1             1 Cumings, Mr… 1        38          1              0
##  3      3     1             3 Heikkinen, … 1        26          0              0
##  4      4     1             1 Futrelle, M… 1        35          1              0
##  5      5     0             3 Allen, Mr. … 0        35          0              0
##  6      7     0             1 McCarthy, M… 0        54          0              0
##  7      8     0             3 Palsson, Ma… 0         2          3              1
##  8      9     1             3 Johnson, Mr… 1        27          0              2
##  9     10     1             2 Nasser, Mrs… 1        14          1              0
## 10     11     1             3 Sandstrom, … 1         4          1              1
## # ℹ 704 more rows
## # ℹ 4 more variables: Ticket <chr>, Costo <dbl>, Cabina <chr>, Puerto <chr>

##Paso 5: Análisis de correlación Antes de modelar, observamos cómo se relacionan las variables usando un gráfico de correlación. ##Paso 6: Crear y entrenar la red neuronal *Creamos una red con:

Capas ocultas: 2 capas (3 y 2 neuronas)

Activación: función logística

Salida: no lineal (clasificación)*

##Paso 7: Visualizar la red Mostramos gráficamente la estructura y los pesos de la red neuronal entrenada.

##Paso 8: Evaluar el modelo Obtenemos las predicciones de la red y evaluamos qué tan bien acertó en comparación con los datos reales.

##Resultados y Conclusión *Este modelo logra una precisión superior al 80%, lo cual es bastante bueno considerando la simplicidad del modelo. Podemos observar que las variables sexo y clase del pasajero tienen una fuerte influencia en la probabilidad de supervivencia, lo que confirma el famoso lema: “Mujeres y niños primero”.

Este análisis me permitió comprender mejor:

La preparación de datos para modelos de IA.

El uso de redes neuronales en R.

La interpretación de resultados predictivos.*

Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.