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
- La mayor parte de los tumeres malignos tienen un radius_worst mayor
a 17 cm (94%).
- Los tumores que tienen un radius_worst menor a 17 cm y un
concave.point_ worst menor a .14 suelen ser benignos (98%).
- 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==