Введение

В данной работе выполнены задачи из курса LMS для лабораторный работы №2.

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

# Установка зеркала CRAN
options(repos = c(CRAN = "https://cloud.r-project.org/"))

install.packages("Boruta")
## пакет 'Boruta' успешно распакован, MD5-суммы проверены
## 
## Скачанные бинарные пакеты находятся в
##  C:\Users\kibyh\AppData\Local\Temp\RtmpawqjMs\downloaded_packages
install.packages("FSelector")
## пакет 'FSelector' успешно распакован, MD5-суммы проверены
## 
## Скачанные бинарные пакеты находятся в
##  C:\Users\kibyh\AppData\Local\Temp\RtmpawqjMs\downloaded_packages
install.packages("arules")
## пакет 'arules' успешно распакован, MD5-суммы проверены
## Warning: не могу удалить прежнюю установку пакета 'arules'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): проблема с копированием
## F:\Programs\R-4.4.1\library\00LOCK\arules\libs\x64\arules.dll в
## F:\Programs\R-4.4.1\library\arules\libs\x64\arules.dll: Permission denied
## Warning: восстановлен 'arules'
## 
## Скачанные бинарные пакеты находятся в
##  C:\Users\kibyh\AppData\Local\Temp\RtmpawqjMs\downloaded_packages
install.packages("mlbench")
## пакет 'mlbench' успешно распакован, MD5-суммы проверены
## Warning: не могу удалить прежнюю установку пакета 'mlbench'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): проблема с копированием
## F:\Programs\R-4.4.1\library\00LOCK\mlbench\libs\x64\mlbench.dll в
## F:\Programs\R-4.4.1\library\mlbench\libs\x64\mlbench.dll: Permission denied
## Warning: восстановлен 'mlbench'
## 
## Скачанные бинарные пакеты находятся в
##  C:\Users\kibyh\AppData\Local\Temp\RtmpawqjMs\downloaded_packages

Задача 1: Определение важности признаков с помощью FSelector на данных iris

library(FSelector)
data(iris)

# Применение information.gain для оценки важности признаков
importance <- information.gain(Species ~ ., iris)
importance <- importance[order(importance$attr_importance, decreasing = TRUE),]
print(importance)
## [1] 0.9554360 0.9402853 0.4521286 0.2672750

Задача 2: Дискретизация переменной с использованием arules

library(arules)
## Загрузка требуемого пакета: Matrix
## 
## Присоединяю пакет: 'arules'
## Следующие объекты скрыты от 'package:base':
## 
##     abbreviate, write
# Дискретизация переменной Sepal.Length различными методами
iris$Sepal.Length_interval <- discretize(iris$Sepal.Length, method = "interval", categories = 3)
## Warning in discretize(iris$Sepal.Length, method = "interval", categories = 3):
## Parameter categories is deprecated. Use breaks instead! Also, the default
## method is now frequency!
iris$Sepal.Length_frequency <- discretize(iris$Sepal.Length, method = "frequency", categories = 3)
## Warning in discretize(iris$Sepal.Length, method = "frequency", categories = 3):
## Parameter categories is deprecated. Use breaks instead! Also, the default
## method is now frequency!
iris$Sepal.Length_cluster <- discretize(iris$Sepal.Length, method = "cluster", categories = 3)
## Warning in discretize(iris$Sepal.Length, method = "cluster", categories = 3):
## Parameter categories is deprecated. Use breaks instead! Also, the default
## method is now frequency!
iris$Sepal.Length_fixed <- discretize(iris$Sepal.Length, method = "fixed", categories = c(4.3, 5.5, 6.5, 7.9))
## Warning in discretize(iris$Sepal.Length, method = "fixed", categories = c(4.3,
## : Parameter categories is deprecated. Use breaks instead! Also, the default
## method is now frequency!
# Просмотр категорий после дискретизации
table(iris$Sepal.Length_interval)
## 
## [4.3,5.5) [5.5,6.7) [6.7,7.9] 
##        52        70        28
table(iris$Sepal.Length_frequency)
## 
## [4.3,5.4) [5.4,6.3) [6.3,7.9] 
##        46        53        51
table(iris$Sepal.Length_cluster)
## 
##  [4.3,5.33) [5.33,6.27)  [6.27,7.9] 
##          46          53          51
table(iris$Sepal.Length_fixed)
## 
## [4.3,5.5) [5.5,6.5) [6.5,7.9] 
##        52        63        35

Задача 3: Выбор признаков с Boruta на данных Ozone

library(Boruta)
library(mlbench)

data(Ozone)

# Проверка пропусков
colSums(is.na(Ozone))
##  V1  V2  V3  V4  V5  V6  V7  V8  V9 V10 V11 V12 V13 
##   0   0   0   5  12   0  15   2 139  15   1  14   0
# Удаление строк с пропусками
Ozone_clean <- na.omit(Ozone)

# Применение Boruta
set.seed(123)
boruta_result <- Boruta(V4 ~ ., data = Ozone_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...
##  9. run of importance source...
##  10. run of importance source...
##  11. run of importance source...
## After 11 iterations, +0.38 secs:
##  confirmed 9 attributes: V1, V10, V11, V12, V13 and 4 more;
##  rejected 2 attributes: V3, V6;
##  still have 1 attribute left.
##  12. run of importance source...
##  13. run of importance source...
##  14. run of importance source...
##  15. run of importance source...
##  16. run of importance source...
##  17. run of importance source...
##  18. run of importance source...
##  19. run of importance source...
##  20. run of importance source...
##  21. run of importance source...
##  22. run of importance source...
##  23. run of importance source...
##  24. run of importance source...
## After 24 iterations, +0.76 secs:
##  rejected 1 attribute: V2;
##  no more attributes left.
plot(boruta_result, las = 2, main = "Boxplot of Feature Importance by Boruta")

Выводы

В ходе лабораторной работы были выполнены задачи по выбору признаков с использованием методов FSelector и Boruta, а также дискретизация данных с использованием пакета arules.