2016-11-02 27 views
0

私は、Rの中のニューラルネットワークを、キャレットパッケージの列関数を使って訓練しています。私はここにいくつかの例のコードを使用しています:Time-series - data spliting and model evaluation。ネットワークトレーニングのRの予測のための事前処理スケール - 予測と同じスケールが得られない

出力は、それが[0,1]に再スケールされていますが、私は予測する機能を使用する場合、私の予測は、[0,1]にスケーリングされていないことを私に伝えます。まず、データが正しく正規化されているかどうかを知るにはどうすればよいですか?次に、正規化された予測をどのように取得するのですか?ここで

は私のコードです:ここでは

timeSlices <- createTimeSlices(1:nrow(mytsframe3), initialWindow = 36, 
          horizon = 12, fixedWindow = TRUE) 

nn <- train(diffREALBRENTSPOT ~ diffF1REALlag + diffF2REALlag, data = mytsframe3[trainSlices[[1]],], method = "mlp" 
     , size = 1, preProc = c("range")) 

> nn 
Multi-Layer Perceptron 

36 samples 
2 predictor 

Pre-processing: re-scaling to [0, 1] (2) 
Resampling: Bootstrapped (25 reps) 
Summary of sample sizes: 36, 36, 36, 36, 36, 36, ... 
Resampling results across tuning parameters: 

    size RMSE  Rsquared 
    1  0.7879697 0.2098693 
    3  0.7485212 0.2249331 
    5  0.7571630 0.2246444 

RMSE was used to select the optimal model using the smallest value. 
The final value used for the model was size = 3. 

pred <- predict(nn, mytsframe3[testSlices[[1]],]) 

str(pred) 
Named num [1:12] 0.0734 -0.0214 0.3264 0.0362 -0.1569 ... 
- attr(*, "names")= chr [1:12] "37" "38" "39" "40" ... 

は、テストのための私のデータのdputです:

structure(list(diffREALBRENTSPOT = c(-0.523999999999999, -0.693, 
0.386999999999999, 0.453000000000001, -0.842000000000001, 0.369999999999999 
), diffF1REALlag = c(0.48597655, -1.61485375, 0.60622805, -0.469351210000001, 
0.292303670000001, -0.44088176), diffF2REALlag = c(1.00948236, 
0.48597655, -1.61485375, 0.60622805, -0.469351210000001, 0.292303670000001 
)), .Names = c("diffREALBRENTSPOT", "diffF1REALlag", "diffF2REALlag" 
), row.names = c(NA, 6L), class = "data.frame") 
+0

「予測」はデフォルトでログオフを与えているかもしれませんし、それらを0-1に変換する必要がありますか? 'predict = 'の呼び出しで' type = "response"を含めようとしましたか? predict.trainで 'エラー(nnは、mytsframe3 [testSlices [[1]]]、タイプ= "応答"): – ulfelder

+1

@ulfelder含む'タイプ= "応答" 'の形式のエラーが発生し タイプのいずれかでなければなりません"raw"または "prob" ' – user111417

+0

さて、あなたは' type = "prob" 'を試しましたか? – ulfelder

答えて

1

ネットワークトレーニングの出力は、それが再スケールされたことを私に伝えます〜[0,1]ですが、私が予測関数を使用したとき、私の予測は[0,1]にスケーリングされません。

結果は数値であり、回帰モデル(分類ではない)に適合しています。 preProcオプションはプレディクタを[0,1]に再スケーリングし、結果または予測をこの範囲に再スケーリングしません。

関連する問題