# build a UBayFS model using Breast Cancer Wisconsin dataset
data(bcw) # dataset
c <- buildConstraints(constraint_types = 'max_size',
constraint_vars = list(10),
num_elements = ncol(bcw$data),
rho = 1) # prior constraints
w <- rep(1, ncol(bcw$data)) # weights
model <- build.UBaymodel(
data = bcw$data,
target = bcw$labels,
M = 20,
constraints = c,
weights = w
)
# use a function computing a decision tree as input
library('rpart')
decision_tree <- function(X, y, n, name = 'tree'){
rf_data = as.data.frame(cbind(y, X))
colnames(rf_data) <- make.names(colnames(rf_data))
tree = rpart::rpart(y~., data = rf_data)
return(list(ranks= which(colnames(X) %in% names(tree$variable.importance)[1:n]),
name = name))
}
model <- build.UBaymodel(
data = bcw$data,
target = bcw$labels,
constraints = c,
weights = w,
method = decision_tree
)
# include block-constraints
c_block <- buildConstraints(constraint_types = 'max_size',
constraint_vars = list(2),
num_elements = length(bcw$blocks),
rho = 10,
block_list = bcw$blocks)
model <- setConstraints(model, c_block)
Run the code above in your browser using DataLab