Установка необходимых пакетов

library(caret)

library(FSelector)

library(arules)

library(Boruta)

2. Задание 1. Порядок команд:

library(caret)

model_methods <- names(getModelInfo()) # вывод доступных методов выбора признаков

print(model_methods)

set.seed(123) # создаем случайный набор данных

x <- matrix(rnorm(50*5), ncol=5)

y <- factor(rep(c(“A”, “B”), 25))

featurePlot(x, y, plot = “density”)

jpeg(“feature_plot.jpg”) # сохранение графика в файл

featurePlot(x, y, plot = “density”)

dev.off()

Вывод: Функция featurePlot() визуально оценить различие признаков между классами. Если распределения сильно пересекаются, разделение классов будет сложным.

3. Задание 2. Порядок команд:

library(FSelector)

data(iris) # загрузка данных

weights_info <- information.gain(Species ~ ., iris) # оценка важности признаков

weights_ratio <- gain.ratio(Species ~ ., iris)

weights_symm <- symmetrical.uncertainty(Species ~ ., iris)

print(weights_info)

print(weights_ratio)

print(weights_symm)

Вывод: Разные методы дают схожие результаты. Так, Petal.Length и Petal.Width оказываются самыми значимыми признаками.

4. Задание 3. Порядок команд:

library(arules)

interval_disc <- discretize(iris$Petal.Length, method = “interval”, categories = 3) # дискретизация переменной Petal.Length

frequency_disc <- discretize(iris$Petal.Length, method = “frequency”, categories = 3)

cluster_disc <- discretize(iris$Petal.Length, method = “cluster”, categories = 3)

fixed_disc <- discretize(iris$Petal.Length, method = “fixed”, categories = c(1,3,5))

print(table(interval_disc))

print(table(frequency_disc))

print(table(cluster_disc))

print(table(fixed_disc))

Вывод: interval разбивает диапазон на равные интервалы; frequency старается сделать группы с равной численностью; cluster использует кластеризацию; fixed вручную задаёт границы.

5. Задание 4. Порядок команд:

library(Boruta)

data(Ozone, package = “mlbench”) # загрузка набора данных Ozone

Ozone <- na.omit(Ozone) # удаление пропущенных значений

set.seed(123)

boruta_result <- Boruta(V4 ~ ., data = Ozone, doTrace = 2)

print(boruta_result)

boxplot(boruta_result, las = 2, main = “Boruta Feature Importance”) #построение графика

Вывод: метод Boruta оценивает важность признаков. признак Confirmed важен для модели.