1. Установка и загрузка пакетов

install.packages(c(“caret”, “FSelector”, “arules”, “Boruta”, “ggplot2”, “rmarkdown”))

library(caret) library(mlbench) library(Boruta) library(FSelector) library(arules) library(ggplot2)

2. Методы выбора признаков в пакете CARET

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”)

Сохранение график в формате JPG:

jpeg(“feature_plot.jpg”) featurePlot(x, y, plot = “pairs”) dev.off()

Вывод: Метод featurePlot() помогает визуализировать распределение данных по классам. На графиках видно, что некоторые признаки лучше разделяют классы, чем другие.

4. Определение важности признаков с FSelector (набор iris)

Используем набор данных 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 наиболее важны для классификации.

5. Дискретизация непрерывных переменных с помощью arules

Применяем разные методы дискретизации к признаку 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)

Вывод: Различные методы дают разную разбивку данных, что влияет на анализ.

6. Выбор признаков с Boruta

Загружаем данные 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 позволяет отбирать наиболее значимые признаки, игнорируя неинформативные.