Этот отчет содержит результаты выполнения лабораторной работы номер 2 по предмету “Анализ данных”
Установить пакет CARET, выполнить команду names(getModelInfo()), ознакомиться со списком доступных методов выбора признаков. Выполните графический разведочный анализ данных с использование функции featurePlot() для набора данных из справочного файла пакета CARET:
x <- matrix(rnorm(50*5),ncol=5)
y <- factor(rep(c(“A”, “B”), 25))
Сохранить полученные графики в *.jpg файлы. Сделать выводы.
install.packages("caret")
## Устанавливаю пакет в 'C:/Users/yuram/AppData/Local/R/win-library/4.4'
## (потому что 'lib' не определено)
## пакет 'caret' успешно распакован, MD5-суммы проверены
## Warning in install.packages :
## не могу удалить прежнюю установку пакета 'caret'
## Warning in install.packages :
## проблема с копированием C:\Users\yuram\AppData\Local\R\win-library\4.4\00LOCK\caret\libs\x64\caret.dll в C:\Users\yuram\AppData\Local\R\win-library\4.4\caret\libs\x64\caret.dll: Permission denied
## Warning in install.packages :
## восстановлен 'caret'
##
## Скачанные бинарные пакеты находятся в
## C:\Users\yuram\AppData\Local\Temp\RtmpSYxDlp\downloaded_packages
library(caret)
## Загрузка требуемого пакета: ggplot2
##
## Присоединяю пакет: 'ggplot2'
## Следующий объект скрыт '.GlobalEnv':
##
## diamonds
## Загрузка требуемого пакета: lattice
names(getModelInfo())
## [1] "ada" "AdaBag" "AdaBoost.M1" "adaboost"
## [5] "amdai" "ANFIS" "avNNet" "awnb"
## [9] "awtan" "bag" "bagEarth" "bagEarthGCV"
## [13] "bagFDA" "bagFDAGCV" "bam" "bartMachine"
## [17] "bayesglm" "binda" "blackboost" "blasso"
## [21] "blassoAveraged" "bridge" "brnn" "BstLm"
## [25] "bstSm" "bstTree" "C5.0" "C5.0Cost"
## [29] "C5.0Rules" "C5.0Tree" "cforest" "chaid"
## [33] "CSimca" "ctree" "ctree2" "cubist"
## [37] "dda" "deepboost" "DENFIS" "dnn"
## [41] "dwdLinear" "dwdPoly" "dwdRadial" "earth"
## [45] "elm" "enet" "evtree" "extraTrees"
## [49] "fda" "FH.GBML" "FIR.DM" "foba"
## [53] "FRBCS.CHI" "FRBCS.W" "FS.HGD" "gam"
## [57] "gamboost" "gamLoess" "gamSpline" "gaussprLinear"
## [61] "gaussprPoly" "gaussprRadial" "gbm_h2o" "gbm"
## [65] "gcvEarth" "GFS.FR.MOGUL" "GFS.LT.RS" "GFS.THRIFT"
## [69] "glm.nb" "glm" "glmboost" "glmnet_h2o"
## [73] "glmnet" "glmStepAIC" "gpls" "hda"
## [77] "hdda" "hdrda" "HYFIS" "icr"
## [81] "J48" "JRip" "kernelpls" "kknn"
## [85] "knn" "krlsPoly" "krlsRadial" "lars"
## [89] "lars2" "lasso" "lda" "lda2"
## [93] "leapBackward" "leapForward" "leapSeq" "Linda"
## [97] "lm" "lmStepAIC" "LMT" "loclda"
## [101] "logicBag" "LogitBoost" "logreg" "lssvmLinear"
## [105] "lssvmPoly" "lssvmRadial" "lvq" "M5"
## [109] "M5Rules" "manb" "mda" "Mlda"
## [113] "mlp" "mlpKerasDecay" "mlpKerasDecayCost" "mlpKerasDropout"
## [117] "mlpKerasDropoutCost" "mlpML" "mlpSGD" "mlpWeightDecay"
## [121] "mlpWeightDecayML" "monmlp" "msaenet" "multinom"
## [125] "mxnet" "mxnetAdam" "naive_bayes" "nb"
## [129] "nbDiscrete" "nbSearch" "neuralnet" "nnet"
## [133] "nnls" "nodeHarvest" "null" "OneR"
## [137] "ordinalNet" "ordinalRF" "ORFlog" "ORFpls"
## [141] "ORFridge" "ORFsvm" "ownn" "pam"
## [145] "parRF" "PART" "partDSA" "pcaNNet"
## [149] "pcr" "pda" "pda2" "penalized"
## [153] "PenalizedLDA" "plr" "pls" "plsRglm"
## [157] "polr" "ppr" "pre" "PRIM"
## [161] "protoclass" "qda" "QdaCov" "qrf"
## [165] "qrnn" "randomGLM" "ranger" "rbf"
## [169] "rbfDDA" "Rborist" "rda" "regLogistic"
## [173] "relaxo" "rf" "rFerns" "RFlda"
## [177] "rfRules" "ridge" "rlda" "rlm"
## [181] "rmda" "rocc" "rotationForest" "rotationForestCp"
## [185] "rpart" "rpart1SE" "rpart2" "rpartCost"
## [189] "rpartScore" "rqlasso" "rqnc" "RRF"
## [193] "RRFglobal" "rrlda" "RSimca" "rvmLinear"
## [197] "rvmPoly" "rvmRadial" "SBC" "sda"
## [201] "sdwd" "simpls" "SLAVE" "slda"
## [205] "smda" "snn" "sparseLDA" "spikeslab"
## [209] "spls" "stepLDA" "stepQDA" "superpc"
## [213] "svmBoundrangeString" "svmExpoString" "svmLinear" "svmLinear2"
## [217] "svmLinear3" "svmLinearWeights" "svmLinearWeights2" "svmPoly"
## [221] "svmRadial" "svmRadialCost" "svmRadialSigma" "svmRadialWeights"
## [225] "svmSpectrumString" "tan" "tanSearch" "treebag"
## [229] "vbmpRadial" "vglmAdjCat" "vglmContRatio" "vglmCumulative"
## [233] "widekernelpls" "WM" "wsrf" "xgbDART"
## [237] "xgbLinear" "xgbTree" "xyf"
x <- matrix(rnorm(50*5), ncol=5)
y <- factor(rep(c("A", "B"), 25))
featurePlot(x = x, y = y, plot = "pairs")
featurePlot(x = x, y = y, plot = "density")
featurePlot(x = x, y = y, plot = "box")
График pairs показывает попарные зависимости между признаками. График density отображает распределение значений признаков для каждого класса. График box позволяет визуализировать распределение данных по классам.
С использование функций из пакета Fselector [2] определить важность признаков для решения задачи классификации. Использовать набор data(iris). Сделать выводы.
install.packages("FSelector")
## Устанавливаю пакет в 'C:/Users/yuram/AppData/Local/R/win-library/4.4'
## (потому что 'lib' не определено)
## пакет 'FSelector' успешно распакован, MD5-суммы проверены
##
## Скачанные бинарные пакеты находятся в
## C:\Users\yuram\AppData\Local\Temp\RtmpSYxDlp\downloaded_packages
library(FSelector)
data(iris)
weights <- information.gain(Species ~ ., data = iris)
print(weights)
## attr_importance
## Sepal.Length 0.4521286
## Sepal.Width 0.2672750
## Petal.Length 0.9402853
## Petal.Width 0.9554360
Функция information.gain позволяет определить важность признаков для задачи классификации. Результаты показывают, какие признаки наиболее информативны для разделения классов.
В данном случае высший показатель важности - Petal.Width Наименьший - Petal.Length
С использованием функции discretize() из пакета arules выполните преобразование непрерывной переменной в категориальную [3] различными методами: «interval» (равная ширина интервала), «frequency» (равная частота), «cluster» (кластеризация) и «fixed» (категории задают границы интервалов). Используйте набор данных iris. Сделайте выводы.
install.packages("arules")
## Устанавливаю пакет в 'C:/Users/yuram/AppData/Local/R/win-library/4.4'
## (потому что 'lib' не определено)
## пакет 'arules' успешно распакован, MD5-суммы проверены
## Warning in install.packages :
## не могу удалить прежнюю установку пакета 'arules'
## Warning in install.packages :
## проблема с копированием C:\Users\yuram\AppData\Local\R\win-library\4.4\00LOCK\arules\libs\x64\arules.dll в C:\Users\yuram\AppData\Local\R\win-library\4.4\arules\libs\x64\arules.dll: Permission denied
## Warning in install.packages :
## восстановлен 'arules'
##
## Скачанные бинарные пакеты находятся в
## C:\Users\yuram\AppData\Local\Temp\RtmpSYxDlp\downloaded_packages
library(arules)
## Загрузка требуемого пакета: Matrix
##
## Присоединяю пакет: 'arules'
## Следующие объекты скрыты от 'package:base':
##
## abbreviate, write
data(iris)
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)
iris$Sepal.Length_fixed <- discretize(iris$Sepal.Length, method = "fixed", breaks = c(-Inf, 5, 6, Inf))
print(head(iris))
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species Sepal.Length_interval
## 1 5.1 3.5 1.4 0.2 setosa [4.3,5.5)
## 2 4.9 3.0 1.4 0.2 setosa [4.3,5.5)
## 3 4.7 3.2 1.3 0.2 setosa [4.3,5.5)
## 4 4.6 3.1 1.5 0.2 setosa [4.3,5.5)
## 5 5.0 3.6 1.4 0.2 setosa [4.3,5.5)
## 6 5.4 3.9 1.7 0.4 setosa [4.3,5.5)
## Sepal.Length_frequency Sepal.Length_cluster Sepal.Length_fixed
## 1 [4.3,5.4) [4.3,5.63) [5,6)
## 2 [4.3,5.4) [4.3,5.63) [-Inf,5)
## 3 [4.3,5.4) [4.3,5.63) [-Inf,5)
## 4 [4.3,5.4) [4.3,5.63) [-Inf,5)
## 5 [4.3,5.4) [4.3,5.63) [5,6)
## 6 [5.4,6.3) [4.3,5.63) [5,6)
Метод interval:
Интервалы равной ширины: [4.3,5.5), [5.5,6.7), [6.7,7.9). Результат: большинство значений попадают в первый интервал [4.3,5.5). Метод прост, но может быть неэффективен, если данные распределены неравномерно.
Метод frequency:
Интервалы с равным количеством наблюдений: [4.3,5.4), [5.4,6.3), [6.3,7.9). Результат: значения распределены более равномерно по интервалам. Метод полезен, если важно сохранить равное количество наблюдений в каждом интервале.
Метод cluster:
Интервалы на основе кластеризации: [4.3,5.33), [5.33,6.27), [6.27,7.9). Результат: интервалы адаптированы под структуру данных. Метод учитывает распределение данных, что делает его более гибким.
Метод fixed:
Интервалы с заданными границами: [-Inf,5), [5,6), [6,Inf). Результат: значения распределены в соответствии с заданными границами. Метод полезен, если есть априорные знания о значимых границах интервалов.
Установите пакет Boruta и проведите выбор признаков для набора данных data(“Ozone”) [4, 5, 6]. Построить график boxplot, сделать выводы.
install.packages("Boruta")
## Устанавливаю пакет в 'C:/Users/yuram/AppData/Local/R/win-library/4.4'
## (потому что 'lib' не определено)
## пакет 'Boruta' успешно распакован, MD5-суммы проверены
##
## Скачанные бинарные пакеты находятся в
## C:\Users\yuram\AppData\Local\Temp\RtmpSYxDlp\downloaded_packages
library(Boruta)
install.packages("mlbench")
## Устанавливаю пакет в 'C:/Users/yuram/AppData/Local/R/win-library/4.4'
## (потому что 'lib' не определено)
## пакет 'mlbench' успешно распакован, MD5-суммы проверены
## Warning in install.packages :
## не могу удалить прежнюю установку пакета 'mlbench'
## Warning in install.packages :
## проблема с копированием C:\Users\yuram\AppData\Local\R\win-library\4.4\00LOCK\mlbench\libs\x64\mlbench.dll в C:\Users\yuram\AppData\Local\R\win-library\4.4\mlbench\libs\x64\mlbench.dll: Permission denied
## Warning in install.packages :
## восстановлен 'mlbench'
##
## Скачанные бинарные пакеты находятся в
## C:\Users\yuram\AppData\Local\Temp\RtmpSYxDlp\downloaded_packages
data(Ozone)
## Warning in data(Ozone): данные 'Ozone' не найдены
library(mlbench)
data("Ozone")
Ozone <- na.omit(Ozone)
boruta_output <- Boruta(Ozone$V4 ~ ., data = Ozone, 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.64 secs:
## confirmed 10 attributes: V1, V10, V11, V12, V13 and 5 more;
## rejected 1 attribute: V3;
## still have 2 attributes 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...
## After 18 iterations, +1 secs:
## rejected 1 attribute: V6;
## still have 1 attribute left.
## 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...
## 25. run of importance source...
## 26. run of importance source...
## 27. run of importance source...
## 28. run of importance source...
## 29. run of importance source...
## 30. run of importance source...
## 31. run of importance source...
## 32. run of importance source...
## 33. run of importance source...
## 34. run of importance source...
## 35. run of importance source...
## 36. run of importance source...
## 37. run of importance source...
## 38. run of importance source...
## 39. run of importance source...
## 40. run of importance source...
## 41. run of importance source...
## After 41 iterations, +2.2 secs:
## rejected 1 attribute: V2;
## no more attributes left.
print(boruta_output)
## Boruta performed 41 iterations in 2.23549 secs.
## 10 attributes confirmed important: V1, V10, V11, V12, V13 and 5 more;
## 3 attributes confirmed unimportant: V2, V3, V6;
boxplot(Ozone$V4 ~ Ozone$V1, main="Boxplot of Ozone levels by V1", xlab="V1", ylab="Ozone")
Пакет Boruta помогает определить наиболее важные признаки для задачи классификации. График boxplot позволяет визуализировать распределение данных по категориям.