【R言語】特定の型の列を選択
【R言語】特定の型の列を選択
仕事用のメモです
library(tidyverse) dftest <- starwars #数値型の列を選択 numericVars <- which(sapply(dftest, is.numeric)) numericVarNames <- names(numericVars) #文字型の列を選択 numericVars2 <- which(sapply(dftest, is.character)) numericVarNames2 <- names(numericVars2) numericVarNames2
【R言語】Borutaによる変数選択(ランダムフォレスト)
Borutaによる変数選択
データセットの中からある指標に基づいて、
重要変数を選択するアルゴリズムがいくつかある。
私が使っているRのソフトに
Exploratory Desktop
というソフトが大変便利で個人的に使用しています。
ExploratoryにはBorutaという変数選択のアルゴリズム搭載されており、
このソフトを通して初めて存在を知りました。
このアルゴリズムはランダムフォレストと検定を繰り返すことで
重要な変数を自動で選んでくれるすぐれたものです。
今回は実際にコードを書きながら試してみます。
install.packages("Boruta") install.packages("rFerns") library(Boruta) library(rFerns) set.seed(777) #irisからシャッフルした変数を付け加える iris.extended<-data.frame(iris,apply(iris[,-5],2,sample)) names(iris.extended)[6:9]<-paste("Nonsense",1:4,sep="") Boruta(Species~.,data=iris.extended,doTrace=2)->Boruta.iris.extended #重要度をグラフ化 plot(Boruta.iris.extended) #シャドウフレームの変数を消す plot(Boruta.iris.extended,whichShadow = c(FALSE, FALSE, FALSE)) print(Boruta.iris.extended) Boruta(Species~.,data=iris.extended,getImp=getImpFerns)->Boruta.ferns.irisE print(Boruta.ferns.irisE) plot(Boruta.ferns.irisE) #mlbenchのSonarで試す library(mlbench); data(Sonar) Boruta(Class~.,data=Sonar,doTrace=2)->Bor.son print(Bor.son) plot(Bor.son,sort=FALSE) plot(Bor.son,sort=TRUE,whichShadow = c(FALSE, FALSE, FALSE))