>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
本当は回帰がしたかった








