В данной лабораторной работе рассматриваются методы выбора признаков
с использованием пакетов CARET, FSelector,
Boruta и arules в языке R. Выполняется анализ
данных, их дискретизация и построение графиков значимости признаков.
install.packages("caret")
library(caret)
set.seed(123)
x <- matrix(rnorm(50*5), ncol=5)
y <- factor(rep(c("A", "B"), 25))
featurePlot(x, y)
jpeg("featurePlot_output.jpg")
featurePlot(x, y)
dev.off()
Был проведен анализ признаков с помощью функции
featurePlot(), который позволил выявить различия между
классами A и B. Сохранение графика в .jpg формате обеспечивает удобство
представления результатов.
install.packages("FSelector")
library(FSelector)
data(iris)
weights <- information.gain(Species ~ ., iris)
print(weights)
Метод information.gain из пакета FSelector выявил
наиболее важные признаки в наборе iris. Наибольшую
значимость показали Petal.Width и
Petal.Length, что свидетельствует об их высокой
информативности для задачи классификации.
install.packages("arules")
library(arules)
discretize(iris$Sepal.Length, method = "interval", categories = 4) # равная ширина интервала
discretize(iris$Sepal.Length, method = "frequency", categories = 4) # равная частота
discretize(iris$Sepal.Length, method = "cluster", categories = 4) # кластеризация
discretize(iris$Sepal.Length, method = "fixed", breaks = c(4, 5, 6, 7)) # фиксированные границы
Функция discretize() позволила преобразовать непрерывную
переменную Sepal.Length в категориальную с использованием
различных методов. Выбор метода дискретизации зависит от задачи
анализа.
install.packages("mlbench")
install.packages("Boruta")
library(mlbench)
library(Boruta)
data(Ozone, package = "mlbench")
Ozone_clean <- na.omit(Ozone) # Убираем пропущенные значения
boruta_result <- Boruta(V4 ~ ., data = Ozone_clean, doTrace = 2)
print(boruta_result)
plot(boruta_result, main = "Feature Importance")
Метод Boruta помог определить значимые признаки для
переменной V4 в наборе данных Ozone. К важным
признакам относятся V1, V5, V6,
V7, V8, V9, V11,
V12, V13, тогда как V2 и
V3 были отвергнуты как неинформативные. График
boxplot показывает распределение значимости признаков.