
Redes Neuronales
¿Qué son?
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.
Instalar paquetes
#install.packages("neuralnet")
library("neuralnet")
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)
Crear la red neuronal
#Se debe poner primero la VARIABLE QUE SE BUSCA PREDECIR
red_neuronal <-neuralnet(estatus ~ .,data=df)
plot(red_neuronal)
Predecir la 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,] 0.4016657
## [2,] 0.4016657
## [3,] 0.9918840
resultado <- ifelse(prediccion$net.result > 0.5, 1, 0)
resultado
## [,1]
## [1,] 0
## [2,] 0
## [3,] 1
Redes Neuronales Cancer de
Mama
Cargar datos
library(readr)
cancer_de_mama <- read_csv("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...
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
Cambiar las 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)
## # A tibble: 6 x 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
## # i 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>, ...
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)
Generar Red Neuronal
#Se debe poner primero la VARIABLE QUE SE BUSCA PREDECIR
red_neuronal <-neuralnet(diagnosis1 ~ .,data=df)
plot(red_neuronal)
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)
prediccion$net.result
## [,1]
## [1,] 0.3725706
## [2,] 0.3725706
## [3,] 0.3725706
resultado <- ifelse(prediccion$net.result > 0, 1)
resultado
## [,1]
## [1,] 1
## [2,] 1
## [3,] 1
LS0tDQp0aXRsZTogIlJlZGVzIE5ldXJvbmFsZXMiDQphdXRob3I6ICJBbmRyw6lzIEdhcmPDrWFfQTAxMTk3NDExIg0KZGF0ZTogIjA5LzI1LzIwMjMiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogVFJVRQ0KICAgIHRvY19mbG9hdDogVFJVRQ0KICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUNCiAgICB0aGVtZTogInNpbXBsZXgiDQogICAgaGlnaGxpZ2h0OiAicHlnbWVudHMiDQotLS0NCiFbXShyZWRlcy5qZmlmKQ0KDQojIDxzcGFuIHN0eWxlPSJjb2xvcjogcmVkOyI+UmVkZXMgTmV1cm9uYWxlczwvc3Bhbj4NCg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQ7Ij7Cv1F1w6kgc29uPzwvc3Bhbj4NCg0KVW5hIHJlZCBOZXVyb25hbCBBcnRpZmljYWlsIChBTk4pIG1vZGVsYSBsYSByZWxhY2nDs24gZW50cmUgdW4gY29uanVudG8gZGUgZW50cmFkYXMgeSB1bmEgc2FsaWRhLCByZXNvbHZpZW5kbyB1biBwcm9ibGVtYSBkZSBhcHJlbmRpemFqZS4gIA0KDQpVbiBlamVtcG8gZGUgYXBsaWNhY2nDs24gZGUgUmVkZXMgTmV1cm9uYWxlcyBlcyBsYSByZWNvbWVuZGFjacOzbiBkZSBjb250ZW5pZG8gZGUgTmV0ZmxpeC4gIA0KDQoxLkxhIHJlY29tZW5kYWNpw7NuIGRlIGNvbnRlbmlkbyBkZSBOZXRmbGl4LiAyLkVsIEZlZWQgZGUgVGlrVG9rLG8gaW5zdGFncmFtLiAgDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogcmVkOyI+SW5zdGFsYXIgcGFxdWV0ZXM8L3NwYW4+DQpgYGB7ciB3YXJuaW5nPUZBTFNFfQ0KI2luc3RhbGwucGFja2FnZXMoIm5ldXJhbG5ldCIpDQpsaWJyYXJ5KCJuZXVyYWxuZXQiKQ0KYGBgDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogcmVkOyI+QWxpbWVudGFyIGNvbiBlamVtcGxvczwvc3Bhbj4NCmBgYHtyfQ0KI1NlIGNyZWFuIDMgdmVjdG9yZXMNCmV4YW1lbiA8LSBjKDIwLDEwLDMwLDIwLDgwLDMwKQ0KcHJveWVjdG8gPC1jKDkwLDIwLDQwLDUwLDUwLDgwKQ0KZXN0YXR1cyA8LWMoMSwwLDAsMCwxLDEpDQojRWwgby0gTk8gcGFzbyB5IGVsIDEtIFPDrSBwYXNvDQoNCiNTZSBjcmVhIGVsIGRhdGFmcmFtZQ0KZGYgPC0gZGF0YS5mcmFtZShleGFtZW4scHJveWVjdG8sZXN0YXR1cykNCiNWaWV3KGRmKQ0KYGBgDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogcmVkOyI+Q3JlYXIgbGEgcmVkIG5ldXJvbmFsPC9zcGFuPg0KYGBge3J9DQojU2UgZGViZSBwb25lciBwcmltZXJvIGxhIFZBUklBQkxFIFFVRSBTRSBCVVNDQSBQUkVERUNJUg0KcmVkX25ldXJvbmFsIDwtbmV1cmFsbmV0KGVzdGF0dXMgfiAuLGRhdGE9ZGYpDQpwbG90KHJlZF9uZXVyb25hbCkNCmBgYA0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPlByZWRlY2lyIGxhIHJlZCBuZXVyb25hbDwvc3Bhbj4NCmBgYHtyfQ0KcHJ1ZWJhZXhhbWVuIDwtIGMoMzAsIDQwLCA4NSkNCnBydWViYXByb3llY3RvIDwtIGMoODUsIDUwLCA0MCkNCg0KcHJ1ZWJhIDwtIGRhdGEuZnJhbWUocHJ1ZWJhZXhhbWVuLCBwcnVlYmFwcm95ZWN0bykNCnByZWRpY2Npb24gPC0gY29tcHV0ZShyZWRfbmV1cm9uYWwsIHBydWViYSkNCg0KIyBQYXJhIHZlciBlbCByZXN1bHRhZG8gZGUgcHJlZGljY2nDs24gc2UgdXNhIGxhIHNpZ3VpZW50ZSBmdW5jacOzbjoNCnByZWRpY2Npb24kbmV0LnJlc3VsdA0KYGBgDQoNCmBgYHtyfQ0KcmVzdWx0YWRvIDwtIGlmZWxzZShwcmVkaWNjaW9uJG5ldC5yZXN1bHQgPiAwLjUsIDEsIDApDQpyZXN1bHRhZG8NCmBgYA0KDQojIDxzcGFuIHN0eWxlPSJjb2xvcjogcmVkOyI+UmVkZXMgTmV1cm9uYWxlcyBDYW5jZXIgZGUgTWFtYTwvc3Bhbj4NCg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQ7Ij5DYXJnYXIgZGF0b3M8L3NwYW4+DQoNCmBgYHtyIHdhcm5pbmc9RkFMU0V9DQpsaWJyYXJ5KHJlYWRyKQ0KY2FuY2VyX2RlX21hbWEgPC0gcmVhZF9jc3YoImNhbmNlcl9kZV9tYW1hLmNzdiIpDQpgYGANCg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQ7Ij5DYW1iaWFyIGxhcyB2YXJpYWJsZXM8L3NwYW4+DQpgYGB7cn0NCiNNYWxpZ25vID0gMQ0KI0JpZW4gPSAwDQoNCnVuaXF1ZShjYW5jZXJfZGVfbWFtYSRkaWFnbm9zaXMpDQpgYGANCg0KYGBge3J9DQojIFJlZW1wbGF6YSAnTScgY29uIDEgeSAnQicgY29uIDAgZW4gbGEgY29sdW1uYSAnZGlhZ25vc2lzJw0KY2FuY2VyX2RlX21hbWEkZGlhZ25vc2lzIDwtIGlmZWxzZShjYW5jZXJfZGVfbWFtYSRkaWFnbm9zaXMgPT0gIk0iLCAxLCAwKQ0KaGVhZChjYW5jZXJfZGVfbWFtYSkgDQpgYGANCg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQ7Ij5BbGltZW50YXIgY29uIGVqZW1wbG9zPC9zcGFuPg0KYGBge3J9DQojU2UgY3JlYW4gMyB2ZWN0b3JlcyB1dGlsaXphbmRvIGNvbHVtbmFzIGEgZWxlZ2lyICh0dSBkZWNpZGVzKQ0KcmFkaW91c19tZWFuMSA8LWMoY2FuY2VyX2RlX21hbWEkcmFkaXVzX21lYW4pDQp0ZXh0dXJlX21lYW4xIDwtYyhjYW5jZXJfZGVfbWFtYSR0ZXh0dXJlX21lYW4pDQpkaWFnbm9zaXMxIDwtIGMoY2FuY2VyX2RlX21hbWEkZGlhZ25vc2lzKQ0KDQojU2UgY3JlYSBsYSBOdWV2YSBiYXNlIGRlIGRhdG9zDQpkZiA8LSBkYXRhLmZyYW1lKHJhZGlvdXNfbWVhbjEsdGV4dHVyZV9tZWFuMSxkaWFnbm9zaXMxKQ0KYGBgDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogcmVkOyI+R2VuZXJhciBSZWQgTmV1cm9uYWw8L3NwYW4+DQoNCmBgYHtyfQ0KI1NlIGRlYmUgcG9uZXIgcHJpbWVybyBsYSBWQVJJQUJMRSBRVUUgU0UgQlVTQ0EgUFJFREVDSVINCnJlZF9uZXVyb25hbCA8LW5ldXJhbG5ldChkaWFnbm9zaXMxIH4gLixkYXRhPWRmKQ0KcGxvdChyZWRfbmV1cm9uYWwpDQpgYGANCg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQ7Ij5QcmVkZWNpciBSZWQgTmV1cm9uYWw8L3NwYW4+DQoNCmBgYHtyfQ0KcHJ1ZWJhcmFkaW91c19tZWFuMSA8LSBjKDE3Ljk5LDIwLjU3LDE5LjY5KQ0KcHJ1ZWJhdGV4dHVyZV9tZWFuMSA8LSBjKDEwLjM4LDE3Ljc3LDIxLjI1KQ0KDQpwcnVlYmExIDwtIGRhdGEuZnJhbWUocHJ1ZWJhcmFkaW91c19tZWFuMSwgcHJ1ZWJhdGV4dHVyZV9tZWFuMSkNCnByZWRpY2Npb24gPC0gY29tcHV0ZShyZWRfbmV1cm9uYWwsIHBydWViYTEpDQoNCnByZWRpY2Npb24kbmV0LnJlc3VsdA0KYGBgDQoNCmBgYHtyfQ0KcmVzdWx0YWRvIDwtIGlmZWxzZShwcmVkaWNjaW9uJG5ldC5yZXN1bHQgPiAwLCAxKQ0KcmVzdWx0YWRvDQpgYGANCg0K