Home‎ > ‎ProgramTool‎ > ‎R‎ > ‎データマイニング入門‎ > ‎

Chap.2

Chap.2

P71

このチャプタでは、ニューラルネットを試す

library(nnet)

例によって、文字コード問題なので UTF-8にしておく

お札データ <-read.csv("お札.csv",header=T)

スケーリングをすると、学習精度がよくなるらしいので、やっておく。
つまり、値を 0〜1の間に絞る。

下部マージン <- (お札データ$下部マージン -min(お札データ$下部マージン))/(max(お札データ$下部マージン) - min(お札データ$下部マージン))
対角線 <- (お札データ$対角線 -min(お札データ$対角線))/(max(お札データ$対角線) - min(お札データ$対角線))

入力層 <- cbind(下部マージン,対角線)
出力層 <-class.ind(お札データ$真偽)

中身を確かめておく

head(出力層,n=3)
tail(出力層,n=3)

乱数発生して、学習

set.seed(3)
ネットワーク学習 <- nnet(入力層,出力層,size=3,rang=0.3,maxit=2000)

  • size 中間層のユニット数
  • rang 重み付けの初期値 -rang 〜 +rang
  • maxit 学習の最大繰り返し数
学習結果を確かめる

ネットワーク適用 <- predict(ネットワーク学習,入力層)
適用結果 <- round(ネットワーク適用,digits=3)

出力してみる

head(適用結果,n=3)
tail(適用結果,n=3)


結構、あっけない。
これは、2>3>1のモデルになる。入力は、「下部マージン」「対角線」。出力は「真偽」

P74
090121_20_45

次は鉛筆の数え方

library(neural)
鉛筆データ <- read.csv("鉛筆.csv",header=T)

入力層 <- as.matrix(鉛筆データ$本数)
出力層 <- as.matrix(鉛筆データ$ポン)

set.seed(1)
ネットワーク学習 <- rbftrain(入力層,neurons=10,出力層,it=1000)

これで、ネットワークグラフも出るのね。
出さないようにするには、 visual=F オプション。
で、start をクリック。
Drawをクリックすると、学習結果も出るみたい。

ネットワーク適用 <- rbf(入力層,ネットワーク学習$weight,ネットワーク学習$dist,ネットワーク学習$neurons,ネットワーク学習$sigma)
適用結果 <- round(ネットワーク適用,digits=1)
適用結果

これで、学習結果を適用出来る。

※復習で、「ボン」もやってみるべき。

しかし、この段階だと、何が役に立っているのか、よくわかんないね。
オプション、よく読んどかないと、半分かりにもなってないかも。


P77
090225_16_14

今度は、ケーキでニューラルネット

library(neural)
ケーキデータ <- read.csv("ケーキ.csv",header=T)

甘さ <-(ケーキデータ$甘さ - min(ケーキデータ$甘さ))/(max(ケーキデータ$甘さ) - min(ケーキデータ$甘さ))
新奇性 <-(ケーキデータ$新奇性 - min(ケーキデータ$新奇性))/(max(ケーキデータ$新奇性) - min(ケーキデータ$新奇性))
濃厚さ <-(ケーキデータ$濃厚さ - min(ケーキデータ$濃厚さ))/(max(ケーキデータ$濃厚さ) - min(ケーキデータ$濃厚さ))
食感 <-(ケーキデータ$食感 - min(ケーキデータ$食感))/(max(ケーキデータ$食感) - min(ケーキデータ$食感))
華やかさ <-(ケーキデータ$華やかさ - min(ケーキデータ$華やかさ))/(max(ケーキデータ$華やかさ) - min(ケーキデータ$華やかさ))
値段 <-(ケーキデータ$値段 - min(ケーキデータ$値段))/(max(ケーキデータ$値段) - min(ケーキデータ$値段))

入力層 <- cbind(高級感,甘さ,新奇性,濃厚さ,食感,華やかさ,値段)
出力層 <- as.matrix(ケーキデータ$購入意思)

set.seed(1)
ネットワーク学習 <- mlptrain(入力層,neurons=c(5,3),出力層,it=1000)

ネットワーク適用 <- mlp(入力層,ネットワーク学習$weight,ネットワーク学習$dist,ネットワーク学習$neurons,ネットワーク学習$actfns)
colnames(ネットワーク適用) <- c("予測確率(買う)")
適用結果 <- round(ネットワーク適用,digits=3)
head(適用結果)

ニューラルネットは予測用とかモデル作成って感じだよなぁ。



Comments