2016-07-19 96 views
0

我是R的初學者。Neuralnet公式R

我想了解如何在R中創建神經網絡並使用它們來預測輸出。 我在網上找到一個使用boston數據集的例子,並且正在調整它來測試我的代碼。它的工作原理(我得到的250 MSE :(),但我不明白這部分代碼。

n <- names(train_) 
    f <- as.formula(paste("pred_con ~", paste(n[!n %in% "pred_con"], collapse = " + "))) 
    nn <- neuralnet(f,data=train_,hidden=c(5,3),linear.output=T) 
    pr.nn <- compute(nn,test_[,1:5]) 

有人能解釋一下這是如何工作?謝謝!

回答

2

我想你的意思是這段代碼

f <- as.formula(paste("pred_con ~", paste(n[!n %in% "pred_con"], collapse = " + "))) 

所以讓我們一塊打破下來一塊。

f是變量名。

as.formula強制變量類型爲「公式」類型。其中具有Response_Variable_1 + Variable_2的一般形式。這就是說:使用變量1和變量2來預測響應值。

粘貼是連接字符串片段的函數。所以

paste("Str","ing",sep="") 

會給「字符串」,與sep =「」說給我一個輸入之間的分隔「」。這是什麼都沒有

在代碼中,它使用了在第二個粘貼函數中使用的值爲「+」的加號。

paste(n[!n %in% "pred_con"], collapse = " + ") 

n是train_列的名稱設置

n <- names(train_) 

所以粘貼(N,崩潰= 「+」)會給使用的每個列名和它們之間的+號。

但是,我們不想要「pred_con」我們試圖預測的值。這是在該代碼行的前面部分處理的。

因此,n [%n%in「pred_con」]表示每個名稱,而不是「pred_con」。

所以從

paste(n[!n %in% "pred_con"], collapse = " + ") 

我們得到每個列名與他們之間的+號,比 「pred_con」

另一方面,我們想從Y〜X1 + X2的

所以公式使用另一個粘貼語句將「pred_con」粘貼到我們剛創建的列名稱列表的前面。給我們:

paste("pred_con ~", paste(n[!n %in% "pred_con"], collapse = " + ")) 

最後,我們做類型的公式,而不是字符串,所以我們用as.formula功能包裹。

現在給我們帶來的全部行:

f <- as.formula(paste("pred_con ~", paste(n[!n %in% "pred_con"], collapse = " + "))) 

最後兩行只是使用神經網絡包的東西,所以我不會專注於它。

nn <- neuralnet(f,data=train_,hidden=c(5,3),linear.output=T) 

這只是訓練你的神經網絡。並存儲爲「NN」

pr.nn <- compute(nn,test_[,1:5]) 

這是預測「TEST_」設定的值,使用「NN」,並將它們存儲在「pr.nn」