featurePlot()В данном задании используется пакет caret для
визуализации данных и исследования зависимости между признаками.
library(caret)
## Загрузка требуемого пакета: ggplot2
## Загрузка требуемого пакета: lattice
set.seed(123)
x <- matrix(rnorm(50 * 5), ncol = 5)
y <- factor(rep(c("A", "B"), 25))
df <- data.frame(x, Class = y)
# Построение графиков
featurePlot(x = df[, 1:5], y = df$Class, plot = "box")
# Сохранение графика
jpeg("feature_plot.jpeg")
featurePlot(x = df[, 1:5], y = df$Class, plot = "box")
dev.off()
## png
## 2
#Задание 2
library(FSelector)
data(iris)
weights <- information.gain(Species ~ ., iris)
print(weights)
## attr_importance
## Sepal.Length 0.4521286
## Sepal.Width 0.2672750
## Petal.Length 0.9402853
## Petal.Width 0.9554360
# Визуализация важности признаков
barplot(weights$attr_importance, names.arg = rownames(weights), las = 2, col = "lightblue", main = "Важность признаков (Information Gain)")
weights <- gain.ratio(Species ~ ., iris)
barplot(weights$attr_importance, names.arg = rownames(weights), las = 2, col = "lightblue", main = "Важность признаков (Gain Ratio)")
#Задание 3
library(arules)
## Загрузка требуемого пакета: Matrix
##
## Присоединяю пакет: 'arules'
## Следующие объекты скрыты от 'package:base':
##
## abbreviate, write
# Преобразование данных
iris$Sepal.Length_interval <- discretize(iris$Sepal.Length, method = "interval", breaks = 3)
iris$Sepal.Length_frequency <- discretize(iris$Sepal.Length, method = "frequency", breaks = 3)
iris$Sepal.Length_cluster <- discretize(iris$Sepal.Length, method = "cluster", breaks = 3)
# Вывод таблиц
print(table(iris$Sepal.Length_interval))
##
## [4.3,5.5) [5.5,6.7) [6.7,7.9]
## 52 70 28
print(table(iris$Sepal.Length_frequency))
##
## [4.3,5.4) [5.4,6.3) [6.3,7.9]
## 46 53 51
print(table(iris$Sepal.Length_cluster))
##
## [4.3,5.45) [5.45,6.46) [6.46,7.9]
## 52 63 35
#Задание 4
library(Boruta)
library(mlbench)
# Загрузка данных
data("Ozone")
ozone_data <- Ozone[, 4:6]
ozone_data_clean <- na.omit(ozone_data)
# Применение метода Boruta для выбора признаков
boruta_result <- Boruta(V4 ~ ., data = ozone_data_clean, doTrace = 2)
## 1. run of importance source...
## 2. run of importance source...
## 3. run of importance source...
## 4. run of importance source...
## 5. run of importance source...
## 6. run of importance source...
## 7. run of importance source...
## 8. run of importance source...
## After 8 iterations, +0.52 secs:
## confirmed 2 attributes: V5, V6;
## no more attributes left.
# Отображение результатов
print(boruta_result)
## Boruta performed 8 iterations in 0.5229602 secs.
## 2 attributes confirmed important: V5, V6;
## No attributes deemed unimportant.
# Построение boxplot
boxplot(ozone_data_clean[, c("V4", "V5", "V6")],
main = "Boxplot для набора данных Ozone (столбцы 4, 5, 6)",
col = c("lightblue", "lightgreen", "lightcoral"))