Introducción. ¿Qué es una Red Neuronal?

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

Algunos ejemplos de aplicación de ANN son:
* La recomendación de contenido Netflix.
* El feed de Instagram.
* Determinar el número escrito a mano.

Ejercicio 1. ¿Pasé la materia?

1. Instalar paquetes y llamar librerías

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

2. Obtener datos

examen <- c(20,10,30,20,80,30)
proyecto <- c(90,20,40,50,50,80)
estatus <- c(1,0,0,0,0,1)
df1 <- data.frame(examen,proyecto,estatus)

3. Generar la Red Neuronal

set.seed(123)
rn1 <- neuralnet(estatus ~ ., data=df1)
plot(rn1,rep= "best")

4. Predecir Resultados

prueba_examen <- c(30,40,85)
prueba_proyecto <- c(85,50,40)
prueba1 <- data.frame(prueba_examen,prueba_proyecto)
prediccion <- neuralnet::compute(rn1,prueba1)
prediccion$net.result
##             [,1]
## [1,]  1.04011743
## [2,] -0.02359178
## [3,] -0.02359178
probabilidad <- prediccion$net.result
resultado <- ifelse(probabilidad>0.5, 1, 0)
resultado
##      [,1]
## [1,]    1
## [2,]    0
## [3,]    0

Ejercicio 2. Cáncer de Mama

1. Lectura y filtrado de csv

df2 <- read.csv("cancer_de_mama.csv")
df2$diagnosis <- ifelse(df2$diagnosis == "M", 1,0)

2. Generación de red neuronal

set.seed(123)
rn2 <- neuralnet(diagnosis ~ ., data=df2)
plot(rn2,rep= "best")

3. Predicción de resultados

prueba2 <- df2[c(19,20,21,22,23), ]
prediccion2 <- neuralnet::compute(rn2,prueba2)
prediccion2$net.result
##         [,1]
## 19 0.3725802
## 20 0.3725802
## 21 0.3725802
## 22 0.3725802
## 23 0.3725802

4. Conversión de probabilidades predichas en etiquetas de clase binarias

probabilidad2 <- prediccion2$net.result
resultado2 <- ifelse(probabilidad2>0.5, 1, 0)
resultado2
##    [,1]
## 19    0
## 20    0
## 21    0
## 22    0
## 23    0
LS0tCnRpdGxlOiAiUmVkZXMgTmV1cm9uYWxlcyIKYXV0aG9yOiAiQXZyaWwgTG9iYXRvIC0gQTAwODMzMTEzIgpkYXRlOiAiMjAyMy0wMi0yMiIKb3V0cHV0OiAKIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgY29kZV9kb3dubG9hZDogdHJ1ZSAKICAgIHRoZW1lOiAic3BhY2VsYWIiCiAgICBoaWdobGlnaHQ6ICJrYXRlIgotLS0KCiFbXShodHRwczovL3NlcnZpY2VzLm1ldGVvcmVkLmNvbS9pbWcvYXJ0aWNsZS9jb21vLXVtYS1yZWRlLW5ldXJhbC1mdW5jaW9uYS1lbnRlbmRhLW8tcXVlLWVzdGEtcG9yLXRyYXMtZGUtbXVpdGFzLWludGVsaWdlbmNpYXMtYXJ0aWZpY2lhaXMtMTcwMTU0OTI2NTg4MF83NjgucG5nKQoKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBkYXJrYmx1ZTsiPioqSW50cm9kdWNjacOzbi4gKirCv1F1w6kgZXMgdW5hIFJlZCBOZXVyb25hbD88L3NwYW4+CgpVbmEgUmVkIE5ldXJvbmFsIEFydGlmaWNpYWwgKEFOTikgbW9kZWxhIGxhIHJlbGFjacOzbiBlbnRyZSB1biBjb25qdW50byBkZSBlbnRyYWRhcyB5IHVuYSBzYWxpZGEsIHJlc29sdmllbmRvIHVuIHByb2JsZW1hIGRlIGFwcmVuZGl6YWplLiAgCgpBbGd1bm9zIGVqZW1wbG9zIGRlIGFwbGljYWNpw7NuIGRlIEFOTiBzb246ICAKKiBMYSByZWNvbWVuZGFjacOzbiBkZSBjb250ZW5pZG8gTmV0ZmxpeC4gIAoqIEVsIGZlZWQgZGUgSW5zdGFncmFtLiAgCiogRGV0ZXJtaW5hciBlbCBuw7ptZXJvIGVzY3JpdG8gYSBtYW5vLiAgCgojIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPioqRWplcmNpY2lvIDEqKi4gwr9QYXPDqSBsYSBtYXRlcmlhPzwvc3Bhbj4KCiFbXShodHRwczovL3NwLWFvLnNob3J0cGl4ZWwuYWkvY2xpZW50L3RvX3dlYnAscV9nbG9zc3kscmV0X2ltZyx3XzcxMixoXzM1MC9odHRwczovL3d3dy5ncWRhbHlhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxOC8xMi9jYWxpZmljYWNpb25lcy5qcGcpCgojIyAxLiBJbnN0YWxhciBwYXF1ZXRlcyB5IGxsYW1hciBsaWJyZXLDrWFzCmBgYHtyfQojaW5zdGFsbC5wYWNrYWdlcygibmV1cmFsbmV0IikKbGlicmFyeShuZXVyYWxuZXQpCmBgYAoKIyMgMi4gT2J0ZW5lciBkYXRvcwpgYGB7cn0KZXhhbWVuIDwtIGMoMjAsMTAsMzAsMjAsODAsMzApCnByb3llY3RvIDwtIGMoOTAsMjAsNDAsNTAsNTAsODApCmVzdGF0dXMgPC0gYygxLDAsMCwwLDAsMSkKZGYxIDwtIGRhdGEuZnJhbWUoZXhhbWVuLHByb3llY3RvLGVzdGF0dXMpCmBgYAoKIyMgMy4gR2VuZXJhciBsYSBSZWQgTmV1cm9uYWwKYGBge3J9CnNldC5zZWVkKDEyMykKcm4xIDwtIG5ldXJhbG5ldChlc3RhdHVzIH4gLiwgZGF0YT1kZjEpCnBsb3Qocm4xLHJlcD0gImJlc3QiKQpgYGAKCiMjIDQuIFByZWRlY2lyIFJlc3VsdGFkb3MKYGBge3J9CnBydWViYV9leGFtZW4gPC0gYygzMCw0MCw4NSkKcHJ1ZWJhX3Byb3llY3RvIDwtIGMoODUsNTAsNDApCnBydWViYTEgPC0gZGF0YS5mcmFtZShwcnVlYmFfZXhhbWVuLHBydWViYV9wcm95ZWN0bykKcHJlZGljY2lvbiA8LSBuZXVyYWxuZXQ6OmNvbXB1dGUocm4xLHBydWViYTEpCnByZWRpY2Npb24kbmV0LnJlc3VsdApwcm9iYWJpbGlkYWQgPC0gcHJlZGljY2lvbiRuZXQucmVzdWx0CnJlc3VsdGFkbyA8LSBpZmVsc2UocHJvYmFiaWxpZGFkPjAuNSwgMSwgMCkKcmVzdWx0YWRvCmBgYAoKIyA8c3BhbiBzdHlsZT0iY29sb3I6ICNFRTEyODk7Ij4qKkVqZXJjaWNpbyAyLioqIEPDoW5jZXIgZGUgTWFtYTwvc3Bhbj4KCiFbXShodHRwczovL3d3dy5kZXhldXMuY29tL2Jsb2cvd3AtY29udGVudC91cGxvYWRzLzIwMTYvMTAvY2FuY2VyLW1hbWEtcHJldmVuY2lvbi5qcGcpCgojIyAxLiBMZWN0dXJhIHkgZmlsdHJhZG8gZGUgY3N2CmBgYHtyfQpkZjIgPC0gcmVhZC5jc3YoImNhbmNlcl9kZV9tYW1hLmNzdiIpCmRmMiRkaWFnbm9zaXMgPC0gaWZlbHNlKGRmMiRkaWFnbm9zaXMgPT0gIk0iLCAxLDApCmBgYAoKIyMgMi4gR2VuZXJhY2nDs24gZGUgcmVkIG5ldXJvbmFsCmBgYHtyfQpzZXQuc2VlZCgxMjMpCnJuMiA8LSBuZXVyYWxuZXQoZGlhZ25vc2lzIH4gLiwgZGF0YT1kZjIpCnBsb3Qocm4yLHJlcD0gImJlc3QiKQpgYGAKCiMjIDMuIFByZWRpY2Npw7NuIGRlIHJlc3VsdGFkb3MKYGBge3J9CnBydWViYTIgPC0gZGYyW2MoMTksMjAsMjEsMjIsMjMpLCBdCnByZWRpY2Npb24yIDwtIG5ldXJhbG5ldDo6Y29tcHV0ZShybjIscHJ1ZWJhMikKcHJlZGljY2lvbjIkbmV0LnJlc3VsdApgYGAKCiMjIDQuIENvbnZlcnNpw7NuIGRlIHByb2JhYmlsaWRhZGVzIHByZWRpY2hhcyBlbiBldGlxdWV0YXMgZGUgY2xhc2UgYmluYXJpYXMKYGBge3J9CnByb2JhYmlsaWRhZDIgPC0gcHJlZGljY2lvbjIkbmV0LnJlc3VsdApyZXN1bHRhZG8yIDwtIGlmZWxzZShwcm9iYWJpbGlkYWQyPjAuNSwgMSwgMCkKcmVzdWx0YWRvMgpgYGAK