install.packages(c(“caret”, “FSelector”, “arules”, “Boruta”, “ggplot2”, “rmarkdown”))
library(caret) library(mlbench) library(Boruta) library(FSelector) library(arules) library(ggplot2)
model_methods <- names(getModelInfo()) print(model_methods)
set.seed(42) x <- matrix(rnorm(50*5), ncol=5) y <- factor(rep(c(“A”, “B”), 25))
featurePlot(x, y, plot = “pairs”)
jpeg(“feature_plot.jpg”) featurePlot(x, y, plot = “pairs”) dev.off()
Вывод: Метод featurePlot() помогает визуализировать распределение данных по классам. На графиках видно, что некоторые признаки лучше разделяют классы, чем другие.
Используем набор данных iris: data(iris)
Применяем алгоритм information.gain() для оценки важности признаков: importance <- information.gain(Species ~ ., iris) print(importance)
Визуализируем значимость признаков: barplot(importance[, 1], names.arg = rownames(importance), col = “blue”, main = “Важность признаков (Information Gain)”)
Вывод: Признаки с наибольшим значением Information Gain наиболее важны для классификации.
Применяем разные методы дискретизации к признаку Sepal.Length: interval <- discretize(iris\(Sepal.Length, method = "interval", categories = 3) frequency <- discretize(iris\)Sepal.Length, method = “frequency”, categories = 3) cluster <- discretize(iris$Sepal.Length, method = “cluster”, categories = 3)
Добавляем дискретизированные данные в iris и выводим результаты: iris\(Sepal.Length.interval <- interval iris\)Sepal.Length.frequency <- frequency iris$Sepal.Length.cluster <- cluster head(iris)
Вывод: Различные методы дают разную разбивку данных, что влияет на анализ.
Загружаем данные Ozone: data(Ozone)
Применяем алгоритм Boruta: set.seed(42) boruta_result <- Boruta(Ozone$V4 ~ ., data = Ozone, doTrace = 2) print(boruta_result)
Построение графика plot(boruta_result, main = “Выбор признаков с использованием Boruta”)
Вывод: Boruta позволяет отбирать наиболее значимые признаки, игнорируя неинформативные.