【R】neuralnet関数でエラーが出た時の対処法
neuralnet関数
neuralnet関数とはRにおけるニューラルネットワークライブラリの1つです。本ライブラリの利点としては作成した学習器を直接plot()で可視化でき、計算グラフや重み・バイアスの値が一目でわかる点が挙げられます。
以下は練習としてirisデータセットで多クラス分類を行った際、いろいろ躓いたので備忘録を兼ねてのメモです。実際にRでニューラルネットワークを試すときは、他の扱いやすいライブラリを選択することを推奨します。
neuralnet実行時のエラーと対処
質的変数の入力エラー
Rの多くの関数では質的変数をfactor型として定義すると、自動でダミー変数として扱ってくれます(pythonではfactor型がなく、pandasのget_dummies関数などで質的変数分け、0 or 1でどれに属するかを示すカラムを作成する)。neuralnet関数は量的変数のみしか扱えないため、irisの「Species」のような質的変数を正しく認識することが出来ずエラーが出てしまった。質的変数をダミー変数に変換するには以下のコードを実行します。
library(caret)
tmp <- dummyVars(~.,data=train)
dummy <- as.data.frame(predict(tmp, train))
多クラス分類時のformulaについて
nnet関数などでは以下のように書ける。ここではSpeciesに対し、それ以外の変数を説明変数と指定している(「.」 は目的変数以外という意味)。
library(nnet)
nn1 <- nnet(formula = Species ~ ., size=5, data=train)
説明変数をダミー変数化してしまったため、formulaは分類するクラス全てを「+」で繋げて記載する。
library("neuralnet") f = Species.setosa + Species.versicolor + Species.virginica
~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
nn2 <- neuralnet(formula = f, data = dummy)
結果
無事irisの分類ができました。
ディスカッション
コメント一覧
まだ、コメントがありません