R言語でのニューラルネットワーク
R言語でニューラルネットワークを今日勉強したので、それについて書きます。
今日勉強したのは、階層ニューラルネットワークについてです。ニューラルネットワークについては脳をどのようにモデリングするかを学びました。誤差逆伝搬法と最急降下法について学びました!
参考書はこれです!
- 作者: 吉冨康成
- 出版社/メーカー: 朝倉書店
- 発売日: 2002/07
- メディア: 単行本
- 購入: 3人 クリック: 7回
- この商品を含むブログ (1件) を見る
R言語のソースはこれです
library(nnet) #Sepalate iris data by odd number and even number. Odd number data are train. Even are test. train <- seq.int(1, 150, by=2) test <- setdiff(1:150, train) iris.nnet <- nnet(Species~., size=3, data=iris[train,]) iris.pred <- predict(iris.nnet, iris[test,], type="class") table(iris[test,5], iris.pred)
このプログラムでは、学習・検証のデータとして iris データを使っている。irisデータはこんな感じ!
head(iris) Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa
irisデータの偶数番号と奇数番号で2つに分けそれらを教師用データと正解データに分けている。
trainデータにはirisデータの奇数番号のものが入っている。
> head(iris[train,]) Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 7 4.6 3.4 1.4 0.3 setosa 9 4.4 2.9 1.4 0.2 setosa 11 5.4 3.7 1.5 0.2 setosa
iris.nnet <- nnet(Species~., size=3, data=iris[train,])で、まずはじめの引数で結果として出力したいデータ(今回は花の種類)を指定しsizeで隠れ層の数を指定する。第3奇数のdataに教師用データを指定する。
iris.pred <- predict(iris.nnet, iris[test,], type="class")で分類結果を戻り値として返してくれる。第一引数に学習器とする。
table(iris[test,5], iris.pred)でクロス表を作成する。
> table(iris[test,5], iris.pred) iris.pred setosa versicolor virginica setosa 25 0 0 versicolor 0 24 1 virginica 0 3 22 <||