Redes Neuronales

  1. La recomendación de contenido de Netflix.
  2. FYP de Tiktok, o instagram.

1. Instalar paquetes y llamar librerías

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

2. Alimentar con ejemplos

# vamos a alimentar de forma manual debido a que no se tiene un csv

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

df <- data.frame(examen, proyecto, estatus)

3. Generar Red Neuronal

red_neuronal <- neuralnet(estatus~ ., data=df)
plot(red_neuronal, rep="best")

4. Predecir con la Red Neuronal

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.3999626
## [2,] 0.3999626
## [3,] 1.5198355
probabilidad <- prediccion$net.result
resultado <- ifelse(probabilidad>0.5,1,0)
resultado
##      [,1]
## [1,]    0
## [2,]    0
## [3,]    1

Ejercicio de cáncer de mama

1. Cargar base de datos

cancer <- read.csv("/Users/KarlaCastillo/Desktop/Datos/cancer_de_mama.csv") 
cancer$diagnosis <- ifelse(cancer$diagnosis =="M",1,0)

2. Generar Red Neuronal

red_neuronal1 <- neuralnet(diagnosis~ ., data=cancer)
plot(red_neuronal1, rep="best")

3. Predecir con la Red Neuronal - Forma 1

pruebac <- cancer[c(19,20,21,22,23), ]
predic <- compute(red_neuronal1, pruebac)
predic$net.result
##         [,1]
## 19 0.3725724
## 20 0.3725724
## 21 0.3725724
## 22 0.3725724
## 23 0.3725724
pro <- predic$net.result
result <- ifelse(pro>0.5,1,0)
result
##    [,1]
## 19    0
## 20    0
## 21    0
## 22    0
## 23    0

3. Predecir con la Red Neuronal - Forma 2

prueba1 <- c(17.990, 10.38, 122.80, 1001.0, 0.11840, 0.27760, 0.300100, 0.147100, 0.2419, 0.07871, 1.0950, 0.9053,8.5890 ,153.400,0.006399 ,0.049040 ,0.053730,0.015870 ,0.030030,0.006193,25.380,17.33,184.60,2019.0,0.16220,0.66560,0.711900,0.26540,0.4601,0.11890)

prueba2 <- c(6.981,13.43,43.79,143.5,0.11700,0.07568,0.0000000,0.000000,0.1930,0.07818,0.2241,1.5080,1.5530,9.833,0.010190,0.010840,0.0000000,0.000000,0.02659,0.004100,7.930,19.54,50.41,185.2,0.15840,0.12020,0.000000,0.00000,0.2932,0.09382)

n_c <- c("radius_mean", "texture_mean", "perimeter_mean", "area_mean", "smoothness_mean", "compactness_mean", "concavity_mean", "concave points_mean", "symmetry_mean", "fractal_dimension_mean", "radius_se", "texture_se", "perimeter_se", "area_se", "smoothness_se", "compactness_se", "concavity_se", "concave points_se", "symmetry_se", "fractal_dimension_se", "radius_worst", "texture_worst", "perimeter_worst", "area_worst", "smoothness_worst", "compactness_worst", "concavity_worst", "concave points_worst", "symmetry_worst", "fractal_dimension_worst")

prueba_cancer <- data.frame(prueba1, prueba2)
prueba_cancer <- t(prueba_cancer)
colnames(prueba_cancer) <- n_c


prediccion1 <- compute(red_neuronal1,prueba_cancer)
prediccion1$net.result
##              [,1]
## prueba1 0.3725724
## prueba2 0.3725724
prob <- prediccion1$net.result
resultado_cancer <- ifelse(prob>0.5,1,0)
resultado_cancer
##         [,1]
## prueba1    0
## prueba2    0