REDES NEURONALES

¿QUÉ ES?

Una red Neuronal Artificail (ANN) modela la relación entre un conjunto de entradas y una salida, resolviendo un problema de aprendizaje.

Un ejempo de aplicación de Redes Neuronales es la recomendación de contenido de Netflix.

1.La recomendación de contenido de Netflix. 2.El Feed de TikTok,o instagram.

1.Instalar Paquetes

#install.packages("neuralnet")
library("neuralnet")

2.Alimentar con ejemplos

#Se crean 3 vectores
examen <- c(20,10,30,20,80,30)
proyecto <-c(90,20,40,50,50,80)
estatus <-c(1,0,0,0,1,1)
#El o- NO paso y el 1- Sí paso

#Se crea el dataframe
df <- data.frame(examen,proyecto,estatus)
#View(df)

3.Generar la Red Neuronal

#Se debe poner primero la VARIABLE QUE SE BUSCA PREDECIR
red_neuronal <-neuralnet(estatus ~ .,data=df)
plot(red_neuronal)

4.Predecir Red Neuronal

pruebaexamen <- c(30, 40, 85)
pruebaproyecto <- c(85, 50, 40)

prueba <- data.frame(pruebaexamen, pruebaproyecto)
prediccion <- compute(red_neuronal, prueba)

# Para ver el resultado de predicción se usa la siguiente función:
prediccion$net.result
##           [,1]
## [1,] 1.1279333
## [2,] 0.2405718
## [3,] 0.7394526
resultado <- ifelse(prediccion$net.result > 0.5, 1, 0)
resultado
##      [,1]
## [1,]    1
## [2,]    0
## [3,]    1

REDES NEURONALES CANCER DE MAMA

1.Instalar excel cancer mama

library(readr)
library(readr)
cancer_de_mama <- read_csv("C:\\Users\\luisa\\Documents\\R LUISA\\MODULO 4\\cancer_de_mama.csv")
## Rows: 569 Columns: 31
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (1): diagnosis
## dbl (30): radius_mean, texture_mean, perimeter_mean, area_mean, smoothness_m...
## 
## ℹ 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(cancer_de_mama)

2.Cambiar variables

#Maligno = 1
#Bien = 0

unique(cancer_de_mama$diagnosis)
## [1] "M" "B"
# Reemplaza 'M' con 1 y 'B' con 0 en la columna 'diagnosis'
cancer_de_mama$diagnosis <- ifelse(cancer_de_mama$diagnosis == "M", 1, 0)
head(cancer_de_mama)  # Muestra las primeras filas del DataFrame modificado
## # A tibble: 6 × 31
##   diagnosis radius_mean texture_mean perimeter_mean area_mean smoothness_mean
##       <dbl>       <dbl>        <dbl>          <dbl>     <dbl>           <dbl>
## 1         1        18.0         10.4          123.      1001           0.118 
## 2         1        20.6         17.8          133.      1326           0.0847
## 3         1        19.7         21.2          130       1203           0.110 
## 4         1        11.4         20.4           77.6      386.          0.142 
## 5         1        20.3         14.3          135.      1297           0.100 
## 6         1        12.4         15.7           82.6      477.          0.128 
## # ℹ 25 more variables: compactness_mean <dbl>, concavity_mean <dbl>,
## #   `concave points_mean` <dbl>, symmetry_mean <dbl>,
## #   fractal_dimension_mean <dbl>, radius_se <dbl>, texture_se <dbl>,
## #   perimeter_se <dbl>, area_se <dbl>, smoothness_se <dbl>,
## #   compactness_se <dbl>, concavity_se <dbl>, `concave points_se` <dbl>,
## #   symmetry_se <dbl>, fractal_dimension_se <dbl>, radius_worst <dbl>,
## #   texture_worst <dbl>, perimeter_worst <dbl>, area_worst <dbl>, …

2.Alimentar con ejemplos

#Se crean 3 vectores utilizando columnas a elegir (tu decides)
radious_mean1 <-c(cancer_de_mama$radius_mean)
texture_mean1 <-c(cancer_de_mama$texture_mean)
diagnosis1 <- c(cancer_de_mama$diagnosis)

#Se crea la Nueva base de datos
df <- data.frame(radious_mean1,texture_mean1,diagnosis1)

3.Generar la Red Neuronal

#Se debe poner primero la VARIABLE QUE SE BUSCA PREDECIR
red_neuronal <-neuralnet(diagnosis1 ~ .,data=df)
plot(red_neuronal)

4.Predecir Red Neuronal

pruebaradious_mean1 <- c(17.99,20.57,19.69)
pruebatexture_mean1 <- c(10.38,17.77,21.25)

prueba1 <- data.frame(pruebaradious_mean1, pruebatexture_mean1)
prediccion <- compute(red_neuronal, prueba1)

# Para ver el resultado de predicción se usa la siguiente función:
prediccion$net.result
##           [,1]
## [1,] 0.8282999
## [2,] 1.0095691
## [3,] 1.0086785
resultado <- ifelse(prediccion$net.result > 0, 1)
resultado
##      [,1]
## [1,]    1
## [2,]    1
## [3,]    1