とある技術者の徒然草

生産技術者の適当な日記(統計言語Rに関するメモがメイン)

【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))

f:id:M_taka072:20200222203742j:plain
boruta