2016年5月9日月曜日

メモ:RSNNSのデモ(iris)



>library(RSNNS)
# RSNNSパッケージの読み込み。インストールは >install.packages("RSNNS")

> set.seed(2)
# 乱数の種を指定

> data(iris)
# irisのデータを読み込み

> #shuffle the vector
> df <- iris[sample(nrow(iris)),]
# irisからirisの行列の数だけ要素を無作為抽出→並べ替え(後で訓練用データとテスト用データに分けるときのため)

> dfValues <- df[,1:4]
# irisのclass以外の情報を取り出す

> dfTargets <- decodeClassLabels(df[,5])
# irisの種類(Setosa or Versicolor or Virginica)をデータ数*3のバイナリ行列に変換

> #dfTargets <- decodeClassLabels(df[,5], valTrue=0.9, valFalse=0.1)
# ↑こう書くとTrueの成分は0.9、Falseの成分は0.1になる。(行ごとの和が1超えるが)

> df <- splitForTrainingAndTest(dfValues, dfTargets, ratio=0.15)
# データセットを訓練用とテスト用に分ける。後ろ15%のデータをテスト用にする。

> #normalize data
> df <- normTrainingAndTestSet(df)
# 正規化

> model <- mlp(df$inputsTrain, df$targetsTrain, size=5, learnFunc="Quickprop", learnFuncParams=c(0.1, 2.0, 0.0001, 0.1), maxit=50, inputsTest=df$inputsTest, targetsTest=df$targetsTest)
# Multi Layer Perceptron分類機の学習。sizeは隠れ層のユニット数。

# 他のモデル例?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> #model <- mlp(df$inputsTrain, df$targetsTrain, size=5, learnFunc="BackpropBatch", learnFuncParams=c(10, 0.1),maxit=100, inputsTest=df$inputsTest, targetsTest=df$targetsTest)
>
> #model <- mlp(df$inputsTrain, df$targetsTrain, size=5, learnFunc="SCG", learnFuncParams=c(0, 0, 0, 0),
> #    maxit=30, inputsTest=df$inputsTest, targetsTest=df$targetsTest)
>
>
> #model <- rbfDDA(df$inputsTrain, df$targetsTrain)
>
> #model <- elman(df$inputsTrain, df$targetsTrain, size=5, learnFuncParams=c(0.1), maxit=100, inputsTest=df$inputsTest, targetsTest=df$targetsTest)
>
> #model <- rbf(df$inputsTrain, df$targetsTrain, size=40, maxit=200, initFuncParams=c(-4, 4,  0.0,  0.2,  0.04),
> #             learnFuncParams=c(1e-3, 0, 1e-3, 0.1, 0.8), linOut=FALSE)
>
> #model <- rbf(df$inputsTrain, df$targetsTrain, size=40, maxit=600, initFuncParams=c(0, 1,  0.0,  0.2,  0.04),
> #             learnFuncParams=c(1e-5, 0, 1e-5, 0.1, 0.8), linOut=TRUE)

> ##experimental..:
> ##model <- rbf(df$inputsTrain, df$targetsTrain, size=20, maxit=50, initFunc="RBF_Weights_Kohonen",
> ##    initFuncParams=c(50,  0.4,  0), learnFuncParams=c(0.01, 0, 0.01, 0.1, 0.8))
>
> #summary(model)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 


> par(mfrow=c(2,2))

> plotIterativeError(model)
Hit <Return> to see next plot:

> predictions <- predict(model,df$inputsTest)
# 訓練したモデルによる予測値

> plotRegressionError(df$targetsTest[,2], predictions[,2])

> confusionMatrix(df$targetsTrain,fitted.values(model))
       predictions
targets  1  2  3
      1 41  0  0
      2  0 45  1
      3  0  0 40
# 訓練用データのconfusion matrix

> confusionMatrix(df$targetsTest,predictions)
       predictions
targets 1 2 3
      1 9 0 0
      2 0 3 1
      3 0 1 9
# テスト用データのconfusion matrix

> plotROC(fitted.values(model)[,2], df$targetsTrain[,2])

> plotROC(predictions[,2], df$targetsTest[,2])

> #confusion matrix with 402040-method
> confusionMatrix(df$targetsTrain, encodeClassLabels(fitted.values(model),method="402040", l=0.4, h=0.6))
       predictions
targets  1  2  3
      1 41  0  0
      2  0 45  1
      3  0  0 40


本当は回帰がしたかった

0 件のコメント:

コメントを投稿