knitr::opts_chunk$set(echo = TRUE, warning = FALSE, message = FALSE)
if(!require(caret)) install.packages("caret")
if(!require(ggplot2)) install.packages("ggplot2")
if(!require(lattice)) install.packages("lattice")
if(!require(CORElearn)) install.packages("CORElearn")
if(!require(arules)) install.packages("arules")
if(!require(Boruta)) install.packages("Boruta")
if(!require(mlbench)) install.packages("mlbench")
library(caret)
head(names(getModelInfo()), 20)

set.seed(123)
x <- matrix(rnorm(50*5), ncol=5)
colnames(x) <- paste0("Var", 1:5)
y <- factor(rep(c("A", "B"), 25))

featurePlot(x = x, y = y, plot = "box")

jpeg("feature_plot.jpg", width = 800, height = 600)
featurePlot(x = x, y = y, plot = "box")
dev.off()
library(CORElearn)
data(iris)

weights <- attrEval(Species ~ ., data = iris, estimator = "InformationGain")
print(weights)
library(arules)
data(iris)
sl <- iris$Sepal.Length

d_int <- discretize(sl, method = "interval", breaks = 3)
d_freq <- discretize(sl, method = "frequency", breaks = 3)
d_clust <- discretize(sl, method = "cluster", breaks = 3)
d_fixed <- discretize(sl, method = "fixed", breaks = c(4, 5.5, 7, 8))

table(d_int)
table(d_freq)
table(d_clust)
table(d_fixed)

library(Boruta)
library(mlbench)
data("Ozone")
ozone_clean <- na.omit(Ozone)

set.seed(123)
boruta_output <- Boruta(V4 ~ ., data = ozone_clean, doTrace = 0)
plot(boruta_output, cex.axis = 0.7, las = 2, xlab = "", main = "Boruta Feature Selection")