1. Importar la base de datos

#file.choose()
df <- read.csv("/Users/monicagonzalez/Downloads/cancer_de_mama.csv")
str(df)
## 'data.frame':    569 obs. of  31 variables:
##  $ diagnosis              : chr  "M" "M" "M" "M" ...
##  $ radius_mean            : num  18 20.6 19.7 11.4 20.3 ...
##  $ texture_mean           : num  10.4 17.8 21.2 20.4 14.3 ...
##  $ perimeter_mean         : num  122.8 132.9 130 77.6 135.1 ...
##  $ area_mean              : num  1001 1326 1203 386 1297 ...
##  $ smoothness_mean        : num  0.1184 0.0847 0.1096 0.1425 0.1003 ...
##  $ compactness_mean       : num  0.2776 0.0786 0.1599 0.2839 0.1328 ...
##  $ concavity_mean         : num  0.3001 0.0869 0.1974 0.2414 0.198 ...
##  $ concave_points_mean    : num  0.1471 0.0702 0.1279 0.1052 0.1043 ...
##  $ symmetry_mean          : num  0.242 0.181 0.207 0.26 0.181 ...
##  $ fractal_dimension_mean : num  0.0787 0.0567 0.06 0.0974 0.0588 ...
##  $ radius_se              : num  1.095 0.543 0.746 0.496 0.757 ...
##  $ texture_se             : num  0.905 0.734 0.787 1.156 0.781 ...
##  $ perimeter_se           : num  8.59 3.4 4.58 3.44 5.44 ...
##  $ area_se                : num  153.4 74.1 94 27.2 94.4 ...
##  $ smoothness_se          : num  0.0064 0.00522 0.00615 0.00911 0.01149 ...
##  $ compactness_se         : num  0.049 0.0131 0.0401 0.0746 0.0246 ...
##  $ concavity_se           : num  0.0537 0.0186 0.0383 0.0566 0.0569 ...
##  $ concave_points_se      : num  0.0159 0.0134 0.0206 0.0187 0.0188 ...
##  $ symmetry_se            : num  0.03 0.0139 0.0225 0.0596 0.0176 ...
##  $ fractal_dimension_se   : num  0.00619 0.00353 0.00457 0.00921 0.00511 ...
##  $ radius_worst           : num  25.4 25 23.6 14.9 22.5 ...
##  $ texture_worst          : num  17.3 23.4 25.5 26.5 16.7 ...
##  $ perimeter_worst        : num  184.6 158.8 152.5 98.9 152.2 ...
##  $ area_worst             : num  2019 1956 1709 568 1575 ...
##  $ smoothness_worst       : num  0.162 0.124 0.144 0.21 0.137 ...
##  $ compactness_worst      : num  0.666 0.187 0.424 0.866 0.205 ...
##  $ concavity_worst        : num  0.712 0.242 0.45 0.687 0.4 ...
##  $ concave_points_worst   : num  0.265 0.186 0.243 0.258 0.163 ...
##  $ symmetry_worst         : num  0.46 0.275 0.361 0.664 0.236 ...
##  $ fractal_dimension_worst: num  0.1189 0.089 0.0876 0.173 0.0768 ...

2. Instalar paquetes y llamar librerías

#install.packages(caret)
library(neuralnet)
library(caret)
## Loading required package: ggplot2
## Loading required package: lattice

4. Convertir los resultados de la variable dependiente a binario (1,0)

df$diagnosis <- ifelse(df$diagnosis == "M",1,0)

3. Definir los datos de entrenamiento y prueba

set.seed(123)
renglones_entrenamiento <- createDataPartition(df$diagnosis, p=0.8, list=FALSE)
entrenamiento <- df[renglones_entrenamiento,]
prueba <- df[-renglones_entrenamiento,]

5. Generar la Red Neuronal

red_neuronal <- neuralnet(diagnosis~., data=entrenamiento)
plot(red_neuronal, rep = "best")

6. Realizar la predicción y los resultados

prediccion <- compute(red_neuronal, prueba)
prediccion$net.result
##          [,1]
## 1   0.3486923
## 9   0.3486923
## 15  0.3486923
## 17  0.3486923
## 18  0.3486923
## 28  0.3486923
## 35  0.3486923
## 44  0.3486923
## 46  0.3486923
## 56  0.3486923
## 58  0.3486923
## 60  0.3486923
## 65  0.3486923
## 68  0.3486923
## 71  0.3486923
## 79  0.3486923
## 82  0.3486923
## 86  0.3486923
## 95  0.3486923
## 99  0.3486923
## 101 0.3486923
## 109 0.3486923
## 124 0.3486923
## 133 0.3486923
## 138 0.3486923
## 140 0.3486923
## 142 0.3486923
## 157 0.3486923
## 162 0.3486923
## 171 0.3486923
## 173 0.3486923
## 183 0.3486923
## 188 0.3486923
## 189 0.3486923
## 193 0.3486923
## 201 0.3486923
## 203 0.3486923
## 206 0.3486923
## 207 0.3486923
## 216 0.3486923
## 220 0.3486923
## 227 0.3486923
## 233 0.3486923
## 240 0.3486923
## 242 0.3486923
## 247 0.3486923
## 251 0.3486923
## 256 0.3486923
## 259 0.3486923
## 261 0.3486923
## 262 0.3486923
## 275 0.3486923
## 284 0.3486923
## 293 0.3486923
## 296 0.3486923
## 303 0.3486923
## 305 0.3486923
## 317 0.3486923
## 318 0.3486923
## 320 0.3486923
## 323 0.3486923
## 329 0.3486923
## 332 0.3486923
## 340 0.3486923
## 341 0.3486923
## 352 0.3486923
## 354 0.3486923
## 358 0.3486923
## 359 0.3486923
## 369 0.3486923
## 370 0.3486923
## 371 0.3486923
## 375 0.3486923
## 386 0.3486923
## 387 0.3486923
## 394 0.3486923
## 400 0.3486923
## 405 0.3486923
## 407 0.3486923
## 412 0.3486923
## 417 0.3486923
## 418 0.3486923
## 429 0.3486923
## 432 0.3486923
## 434 0.3486923
## 437 0.3486923
## 453 0.3486923
## 454 0.3486923
## 466 0.3486923
## 481 0.3486923
## 484 0.3486923
## 487 0.3486923
## 492 0.3486923
## 510 0.3486923
## 515 0.3486923
## 518 0.3486923
## 520 0.3486923
## 522 0.3486923
## 529 0.3486923
## 531 0.3486923
## 532 0.3486923
## 541 0.3486923
## 545 0.3486923
## 547 0.3486923
## 551 0.3486923
## 554 0.3486923
## 556 0.3486923
## 557 0.3486923
## 558 0.3486923
## 560 0.3486923
## 561 0.3486923
## 562 0.3486923
## 564 0.3486923
probabilidad <- prediccion$net.result
resultado <- ifelse(probabilidad>0.5,1,0)
resultado
##     [,1]
## 1      0
## 9      0
## 15     0
## 17     0
## 18     0
## 28     0
## 35     0
## 44     0
## 46     0
## 56     0
## 58     0
## 60     0
## 65     0
## 68     0
## 71     0
## 79     0
## 82     0
## 86     0
## 95     0
## 99     0
## 101    0
## 109    0
## 124    0
## 133    0
## 138    0
## 140    0
## 142    0
## 157    0
## 162    0
## 171    0
## 173    0
## 183    0
## 188    0
## 189    0
## 193    0
## 201    0
## 203    0
## 206    0
## 207    0
## 216    0
## 220    0
## 227    0
## 233    0
## 240    0
## 242    0
## 247    0
## 251    0
## 256    0
## 259    0
## 261    0
## 262    0
## 275    0
## 284    0
## 293    0
## 296    0
## 303    0
## 305    0
## 317    0
## 318    0
## 320    0
## 323    0
## 329    0
## 332    0
## 340    0
## 341    0
## 352    0
## 354    0
## 358    0
## 359    0
## 369    0
## 370    0
## 371    0
## 375    0
## 386    0
## 387    0
## 394    0
## 400    0
## 405    0
## 407    0
## 412    0
## 417    0
## 418    0
## 429    0
## 432    0
## 434    0
## 437    0
## 453    0
## 454    0
## 466    0
## 481    0
## 484    0
## 487    0
## 492    0
## 510    0
## 515    0
## 518    0
## 520    0
## 522    0
## 529    0
## 531    0
## 532    0
## 541    0
## 545    0
## 547    0
## 551    0
## 554    0
## 556    0
## 557    0
## 558    0
## 560    0
## 561    0
## 562    0
## 564    0

7. Conclusiónl

Es importante corregir los problemas de entrenamiento, ya que es muy poco probable que todos los resultados hayan salido negativos, por lo que será necesaria una revisión del código.

LS0tCnRpdGxlOiAiUmVkZXMgTmV1cm9uYWxlcyAtIEPDoW5jZXIgZGUgbWFtYSIKYXV0aG9yOiAiTW9uaWNhIEdvbnphbGV6IEEwMTczNTYyNiIKZGF0ZTogIjIwMjQtMDgtMTUiCm91dHB1dDogCiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogVFJVRQogICAgdG9jX2Zsb2F0OiBUUlVFCiAgICBjb2RlX2Rvd25sb2FkOiBUUlVFCiAgICB0aGVtZTogInNwYWNlbGFiIgogICAgaGlnaGxpZ2h0OiAia2F0ZSIKLS0tCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPjEuIEltcG9ydGFyIGxhIGJhc2UgZGUgZGF0b3M8L3NwYW4+CmBgYHtyfQojZmlsZS5jaG9vc2UoKQpkZiA8LSByZWFkLmNzdigiL1VzZXJzL21vbmljYWdvbnphbGV6L0Rvd25sb2Fkcy9jYW5jZXJfZGVfbWFtYS5jc3YiKQpzdHIoZGYpCmBgYCAKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+Mi4gSW5zdGFsYXIgcGFxdWV0ZXMgeSBsbGFtYXIgbGlicmVyw61hczwvc3Bhbj4KYGBge3J9CiNpbnN0YWxsLnBhY2thZ2VzKGNhcmV0KQpsaWJyYXJ5KG5ldXJhbG5ldCkKbGlicmFyeShjYXJldCkKYGBgCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij40LiBDb252ZXJ0aXIgbG9zIHJlc3VsdGFkb3MgZGUgbGEgdmFyaWFibGUgZGVwZW5kaWVudGUgYSBiaW5hcmlvICgxLDApPC9zcGFuPgpgYGB7cn0KZGYkZGlhZ25vc2lzIDwtIGlmZWxzZShkZiRkaWFnbm9zaXMgPT0gIk0iLDEsMCkKYGBgCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPjMuIERlZmluaXIgbG9zIGRhdG9zIGRlIGVudHJlbmFtaWVudG8geSBwcnVlYmE8L3NwYW4+CmBgYCB7cn0Kc2V0LnNlZWQoMTIzKQpyZW5nbG9uZXNfZW50cmVuYW1pZW50byA8LSBjcmVhdGVEYXRhUGFydGl0aW9uKGRmJGRpYWdub3NpcywgcD0wLjgsIGxpc3Q9RkFMU0UpCmVudHJlbmFtaWVudG8gPC0gZGZbcmVuZ2xvbmVzX2VudHJlbmFtaWVudG8sXQpwcnVlYmEgPC0gZGZbLXJlbmdsb25lc19lbnRyZW5hbWllbnRvLF0KYGBgCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij41LiBHZW5lcmFyIGxhIFJlZCBOZXVyb25hbDwvc3Bhbj4KYGBge3J9CnJlZF9uZXVyb25hbCA8LSBuZXVyYWxuZXQoZGlhZ25vc2lzfi4sIGRhdGE9ZW50cmVuYW1pZW50bykKcGxvdChyZWRfbmV1cm9uYWwsIHJlcCA9ICJiZXN0IikKYGBgCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij42LiBSZWFsaXphciBsYSBwcmVkaWNjacOzbiB5IGxvcyByZXN1bHRhZG9zPC9zcGFuPgpgYGB7cn0KcHJlZGljY2lvbiA8LSBjb21wdXRlKHJlZF9uZXVyb25hbCwgcHJ1ZWJhKQpwcmVkaWNjaW9uJG5ldC5yZXN1bHQKcHJvYmFiaWxpZGFkIDwtIHByZWRpY2Npb24kbmV0LnJlc3VsdApyZXN1bHRhZG8gPC0gaWZlbHNlKHByb2JhYmlsaWRhZD4wLjUsMSwwKQpyZXN1bHRhZG8KYGBgCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPjcuIENvbmNsdXNpw7NubDwvc3Bhbj4KRXMgaW1wb3J0YW50ZSBjb3JyZWdpciBsb3MgcHJvYmxlbWFzIGRlIGVudHJlbmFtaWVudG8sIHlhIHF1ZSBlcyBtdXkgcG9jbyBwcm9iYWJsZSBxdWUgdG9kb3MgbG9zIHJlc3VsdGFkb3MgaGF5YW4gc2FsaWRvIG5lZ2F0aXZvcywgcG9yIGxvIHF1ZSBzZXLDoSBuZWNlc2FyaWEgdW5hIHJldmlzacOzbiBkZWwgY8OzZGlnby4g