cancer <- read.csv('cancer_de_mama.csv')
str(cancer)
## '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 ...

Filtrar base de datos

cancer <- dplyr::rename(cancer, diagnosis = 'ï..diagnosis')
cancer$diagnosis <- as.factor(ifelse(cancer$diagnosis == "M", "Maligno", "Benigno"))
sapply(cancer, function(x) sum(is.na(x)))
##               diagnosis             radius_mean            texture_mean 
##                       0                       0                       0 
##          perimeter_mean               area_mean         smoothness_mean 
##                       0                       0                       0 
##        compactness_mean          concavity_mean     concave.points_mean 
##                       0                       0                       0 
##           symmetry_mean  fractal_dimension_mean               radius_se 
##                       0                       0                       0 
##              texture_se            perimeter_se                 area_se 
##                       0                       0                       0 
##           smoothness_se          compactness_se            concavity_se 
##                       0                       0                       0 
##       concave.points_se             symmetry_se    fractal_dimension_se 
##                       0                       0                       0 
##            radius_worst           texture_worst         perimeter_worst 
##                       0                       0                       0 
##              area_worst        smoothness_worst       compactness_worst 
##                       0                       0                       0 
##         concavity_worst    concave.points_worst          symmetry_worst 
##                       0                       0                       0 
## fractal_dimension_worst 
##                       0
cancer <- na.omit(cancer)
# Crear Arbol de Decision

library(rpart)
arbol <- rpart(formula=diagnosis ~ ., data = cancer)
arbol
## n= 569 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
##  1) root 569 212 Benigno (0.62741652 0.37258348)  
##    2) radius_worst< 16.795 379  33 Benigno (0.91292876 0.08707124)  
##      4) concave.points_worst< 0.1358 333   5 Benigno (0.98498498 0.01501502) *
##      5) concave.points_worst>=0.1358 46  18 Maligno (0.39130435 0.60869565)  
##       10) texture_worst< 25.67 19   4 Benigno (0.78947368 0.21052632) *
##       11) texture_worst>=25.67 27   3 Maligno (0.11111111 0.88888889) *
##    3) radius_worst>=16.795 190  11 Maligno (0.05789474 0.94210526) *
rpart.plot(arbol)

prp(arbol,extra = 7, prefix = "fraccion")

Conclusiones

  1. La mayor parte de los tumeres malignos tienen un radius_worst mayor a 17 cm (94%).
  2. Los tumores que tienen un radius_worst menor a 17 cm y un concave.point_ worst menor a .14 suelen ser benignos (98%).
  3. De los tumores que tienen un radius_worst menor a 17 cm y un concave.point_worst mayor a .14, los que tienen una texture_worst menor a 26 son benignos (79%) y mayor a 26 son mailgnos (89%).
LS0tDQp0aXRsZTogIkPDoW5jZXIgZGUgbWFtYSINCmF1dGhvcjogIlhpbWVuYSBTb2zDrXMgLSBBMDA4MzEzNzEiDQpkYXRlOiAiMjAyMy0wMi0xNCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICAgIHRvYzogdHJ1ZQ0KICAgICAgdG9jX2Zsb2F0OiB0cnVlDQogICAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpgYGANCg0KYGBge3J9DQpjYW5jZXIgPC0gcmVhZC5jc3YoJ2NhbmNlcl9kZV9tYW1hLmNzdicpDQpzdHIoY2FuY2VyKQ0KYGBgDQoNCiMjIEZpbHRyYXIgYmFzZSBkZSBkYXRvcw0KDQpgYGB7ciwgaW5jbHVkZT1GQUxTRX0NCmxpYnJhcnkoZHBseXIpDQpgYGANCg0KYGBge3J9DQpjYW5jZXIgPC0gZHBseXI6OnJlbmFtZShjYW5jZXIsIGRpYWdub3NpcyA9ICfDry4uZGlhZ25vc2lzJykNCmNhbmNlciRkaWFnbm9zaXMgPC0gYXMuZmFjdG9yKGlmZWxzZShjYW5jZXIkZGlhZ25vc2lzID09ICJNIiwgIk1hbGlnbm8iLCAiQmVuaWdubyIpKQ0Kc2FwcGx5KGNhbmNlciwgZnVuY3Rpb24oeCkgc3VtKGlzLm5hKHgpKSkNCmNhbmNlciA8LSBuYS5vbWl0KGNhbmNlcikNCmBgYA0KDQoNCmBgYHtyfQ0KIyBDcmVhciBBcmJvbCBkZSBEZWNpc2lvbg0KDQpsaWJyYXJ5KHJwYXJ0KQ0KYXJib2wgPC0gcnBhcnQoZm9ybXVsYT1kaWFnbm9zaXMgfiAuLCBkYXRhID0gY2FuY2VyKQ0KYXJib2wNCmBgYA0KDQpgYGB7ciwgaW5jbHVkZT1GQUxTRX0NCmxpYnJhcnkocnBhcnQucGxvdCkNCmBgYA0KDQpgYGB7cn0NCnJwYXJ0LnBsb3QoYXJib2wpDQpgYGANCg0KYGBge3J9DQpwcnAoYXJib2wsZXh0cmEgPSA3LCBwcmVmaXggPSAiZnJhY2Npb24iKQ0KYGBgDQoNCiMjIENvbmNsdXNpb25lcw0KIA0KMS4gTGEgbWF5b3IgcGFydGUgZGUgbG9zIHR1bWVyZXMgbWFsaWdub3MgdGllbmVuIHVuIHJhZGl1c193b3JzdCBtYXlvciBhIDE3IGNtICg5NCUpLiAgDQoyLiBMb3MgdHVtb3JlcyBxdWUgdGllbmVuIHVuIHJhZGl1c193b3JzdCBtZW5vciBhIDE3IGNtIHkgdW4gY29uY2F2ZS5wb2ludF8gd29yc3QgbWVub3IgYSAuMTQgc3VlbGVuIHNlciBiZW5pZ25vcyAoOTglKS4gIA0KMy4gRGUgbG9zIHR1bW9yZXMgcXVlIHRpZW5lbiB1biByYWRpdXNfd29yc3QgbWVub3IgYSAxNyBjbSB5IHVuIGNvbmNhdmUucG9pbnRfd29yc3QgbWF5b3IgYSAuMTQsIGxvcyBxdWUgdGllbmVuIHVuYSB0ZXh0dXJlX3dvcnN0IG1lbm9yIGEgMjYgc29uIGJlbmlnbm9zICg3OSUpIHkgbWF5b3IgYSAyNiBzb27CoG1haWxnbm9zwqAoODklKS4gIA==