Librerías

library(stats)
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.2.1
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(rpart)
## Warning: package 'rpart' was built under R version 4.2.1
library(rpart.plot)
## Warning: package 'rpart.plot' was built under R version 4.2.1
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.2.1
## ── Attaching packages
## ───────────────────────────────────────
## tidyverse 1.3.2 ──
## ✔ ggplot2 3.3.6     ✔ purrr   0.3.4
## ✔ tibble  3.1.7     ✔ stringr 1.4.0
## ✔ tidyr   1.2.0     ✔ forcats 0.5.2
## ✔ readr   2.1.2
## Warning: package 'ggplot2' was built under R version 4.2.1
## Warning: package 'readr' was built under R version 4.2.1
## Warning: package 'forcats' was built under R version 4.2.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
library(ggplot2)

Importar base de datos

df <- read.csv("C:\\Users\\aldof\\Documents\\1 Tec\\Semana Tec 1 - Bootcamp de Programación\\Tercera Clase\\cancer_de_mama.csv")

Árbol de decisiones

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

Gráfico

Para poder visualizarlo de una forma más gráfica y sencilla de comprender utilizamos el apoyo de la librería ggplot2.

prp(tree, extra=7, prefix="fracción\n")

ggplot(data=df, mapping=aes(radius_worst, concave.points_worst)) +
    geom_point(aes(color=diagnosis)) +
    theme_bw()

Conclusión

Con este gráfico podemos comprobar lo que se observaba en el árbol de decisiones, no necesariamente entre más grande y concavo esté el tumor es que sea malo, sino que se concentra en un rango de entre 15 y 25 de radio y 0.15 y 0.25 de concavo, lo que nos indica que entre más temprano se detecte el tumor más posibilidades hay de que el diagnóstico sea bueno, como se observa en la gran concentración en la parte inferior izquierda del gráfico.