The objective is to identify each of a number of benign or malignant classes. Samples arrive periodically as Dr. Wolberg reports his clinical cases. The database therefore reflects this chronological grouping of the data. This grouping information appears immediately below, having been removed from the data itself. Each variable except for the first was converted into 11 primitive numerical attributes with values ranging from 0 through 10. Rows with missing attribute values and duplicate rows removed.
BreastCancer_na.rm
A data frame with 675 observations of 8 numeric variables and
target factor Class
.
Id, Sample code number
Cl.thickness, Clump thickness
Cell.size, Uniformity of cell size
Cell.shape, Uniformity of cell shape
Marg.adhesion, Marginal adhesion
Epith.c.size, Single Epthelial cell size
Bare.nuclei, Bare nuclei
Bl.cromatin, Bland chromatin
Normal.nucleoli, Normal Nucleoli
Mitoses, Mitoses
Class, Class of cancer, either "benign" or "malignant"
J.W. Smith., el al. 1988. Using the ADAP learning algorithm to forecast the onset of diabetes mellitus. In Proceedings of the Symposium on Computer Applications and Medical Care (pp. 261--265). IEEE Computer Society Press.
mlbench, R package. F. Leisch & E. Dimitriadou, 2021. mlbench: Machine Learning Benchmark Problems https://CRAN.R-project.org/package=mlbench
This is a cleaned subset of mlbench
's BreastCancer
.
See help(BreastCancer, package = "mlbench")
for the original.
Replicating this dataset:
require("mlbench")
data(BreastCancer)
raw <- BreastCancer
## rownumber index of 8 duplicate 16 incomplete rows
idx <- !duplicated(raw) & complete.cases(raw)
d <- raw[idx, 3:10]
d <- apply(d, 2L, as.integer)
d <- data.frame(d, Class = as.factor(raw$Class[idx]))
BreastCancer_na.rm <- d
## save(BreastCancer_na.rm, file = "./data/BreastCancer_na.rm.rda")
library(spinifex)
str(BreastCancer_na.rm)
#> 'data.frame': 675 obs. of 9 variables:
#> $ Cell.size : int 1 4 1 8 1 10 1 1 1 2 ...
#> $ Cell.shape : int 1 4 1 8 1 10 1 2 1 1 ...
#> $ Marg.adhesion : int 1 5 1 1 3 8 1 1 1 1 ...
#> $ Epith.c.size : int 2 7 2 3 2 7 2 2 2 2 ...
#> $ Bare.nuclei : int 1 10 2 4 1 10 10 1 1 1 ...
#> $ Bl.cromatin : int 3 3 3 3 3 9 3 3 1 2 ...
#> $ Normal.nucleoli: int 1 2 1 7 1 7 1 1 1 1 ...
#> $ Mitoses : int 1 1 1 1 1 1 1 1 5 1 ...
#> $ Class : Factor w/ 2 levels "benign","malignant": 1 1 1 1 1 2 1 1 1 1 ...
dat <- scale_sd(BreastCancer_na.rm[, 1:8])
clas <- BreastCancer_na.rm$Class
bas <- basis_pca(dat)
mv <- manip_var_of(bas)
mt <- manual_tour(bas, mv)
ggt <- ggtour(mt, dat, angle = .2) +
proto_default(aes_args = list(color = clas, shape = clas))
# \donttest{
animate_plotly(ggt)
# }