2011-02-03 8 views
7

RGUIの使用私はデータと呼ばれるデータセットを持っています。私が興味を持っている応答変数は、Dataの最初の列に含まれています。ニューラルネットパッケージを使用して新しいケースを予測する方法

私は、とDataTestと呼ばれるDataというトレーニングセットを持っています。

DataTrain私はニューネットワークモデル(DataNNと呼ぶ)をパッケージと関数neuralnetで訓練しました。

> DataNN = neuralnet(DataTrain[,1] ~ DataTrain[,2] + DataTrain[,3], hidden = 1, 
    data = DataTrain) 

誰もがテストセット(DataTest)を使用して、このモデルの予測を作成する方法を知っていますか?

通常(他のモデルの場合)私はこれにpredict()を使用します。例えば。

> DataPred = predict(DataNN, DataTest) 

しかしneuralnetのためにこれをやったときに私が取得:

明らか
> DataPred = predict(DataNN, DataTest) 

Error in UseMethod("predict") : 
no applicable method for 'predict' applied to an object of class "nn" 

私はこのモデルにpredict()を実行することはできません。誰か他の選択肢について知っていますか?

neuralnetのヘルプを確認しましたが、documentationの12ページにpredictionというメソッドが見つかりました。私はそれが私が欲しいものだとは思わない、または少なくとも私はDataにそれを適用する方法を知らない。

ご迷惑をおかけして申し訳ございません。

答えて

21

計算方法は、あなたがした後、私はヘルプファイルからこの例をコピーして、いくつかのコメントを追加しているかを行います。予測のため

# Make Some Training Data 
Var1 <- runif(50, 0, 100) 
# create a vector of 50 random values, min 0, max 100, uniformly distributed 
sqrt.data <- data.frame(Var1, Sqrt=sqrt(Var1)) 
# create a dataframe with two columns, with Var1 as the first column 
# and square root of Var1 as the second column 

# Train the neural net 
print(net.sqrt <- neuralnet(Sqrt~Var1, sqrt.data, hidden=10, threshold=0.01)) 
# train a neural net, try and predict the Sqrt values based on Var1 values 
# 10 hidden nodes 

# Compute or predict for test data, (1:10)^2 
compute(net.sqrt, (1:10)^2)$net.result 
# What the above is doing is using the neural net trained (net.sqrt), 
# if we have a vector of 1^2, 2^2, 3^2 ... 10 ^2 (i.e. 1, 4, 9, 16, 25 ... 100), 
# what would net.sqrt produce? 

Output: 
$net.result 
      [,1] 
[1,] 1.110635110 
[2,] 1.979895765 
[3,] 3.013604598 
[4,] 3.987401275 
[5,] 5.004621316 
[6,] 5.999245742 
[7,] 6.989198741 
[8,] 8.007833571 
[9,] 9.016971015 
[10,] 9.944642147 
# The first row corresponds to the square root of 1, second row is square root 
# of 2 and so on. . . So from that you can see that net.sqrt is actually 
# pretty close 
# Note: Your results may vary since the values of Var1 is generated randomly. 
+6

私はcomputeを使用したときにこのエラーが発生しました。「nn」クラスのオブジェクトに適用される 'compute'の適用可能なメソッドがありません。これはdplyrのcomputeメソッドとの競合です。私はこのように呼び出すことで修正しました:neuralnet :: compute()。 –

2

機能がprediction、ないpredictです。

DataPred = predict(DataNN, DataTest)の代わりにDataPred = prediction(DataNN, DataTest)を試してください。

1

答えは(nnは、テスト)

1

を計算しているあなたは、あなたがどんな操作を行うにはdplyrを使用している場合、あなたがする必要があります予測すなわち

DataPred <- compute(DataNN, DataTest) 

のneuralnetのバージョンを使用する必要があります特にところで変数に値を代入するとき、等号を使用することはありませんので、

DataPred <- neuralnet::compute(DataNN, DataTest) 

のように、関数名をライブラリを宣言し、残念ながらそれは悪い習慣です。

関連する問題