2015-11-26 18 views
1

我正在建立一個神經網絡來根據許多變量來預測「擬合」。 「FitCls」分爲三類:「優秀」,「好」和「差」。我有10個輸入變量,並且選擇了一個隱藏層和6個神經元。我想要三個輸出神經元,這樣我可以將呈現給神經網絡的情況歸類爲「優秀」,「好」或「差」的「適合」。 我已經看到一個類似的例子,這裏使用虹膜數據(在幻燈片40以及以下)完成:http://www.slideshare.net/DerekKane/data-science-part-viii-artifical-neural-network。我試圖複製那個結構,但是當我繪製網絡時,我仍然只能得到一個輸出節點。如何使用R中的neuralnet軟件包編程多個輸出節點?

這裏是我的代碼(裝載了「nfit」數據幀後):

nfit[nfit$FitCls=="Excellent", "Output"] <- 2 
nfit[nfit$FitCls=="Good", "Output"] <- 1 
nfit[nfit$FitCls=="Poor", "Output"] <- 0 
nn <- neuralnet(Output~Universalism+Benevolence+Tradition+Conformity+Security+Power+Achievement+Hedonism+Stimulation+SelfDir, data = nfit, hidden = 6, err.fct = "ce", linear.output = FALSE) 

當我運行neuralnet,它給了我一個警告信息,它迫使err.fct爲「上交所」,因爲響應不是二元的。我不確定發生了什麼問題,因爲在我複製的例子中,神經網絡的圖表顯示了三個輸出節點。請讓我知道我做錯了什麼。

如果這不是使用神經網絡進行分類的正確方法,我也將非常感謝您爲我應該做的事情提供的任何幫助。非常感謝!

+0

也許庫正在將你的響應變量當作一個數字。您是否嘗試將「FitCls」列放入因子列中? 'nfit $ FitCls < - as.factor(nfit $ FitCls)' – ialm

+0

感謝您的迴應。我曾嘗試過,但神經網似乎無法以這種方式處理因素。這種方法適用於nnet,但出於某種原因,與神經網絡無關。 –

回答

1

或多或少複製虹膜例如,你將需要:

library(neuralnet) 
library(nnet) 
trainset <- cbind(iris[, 1:4], class.ind(iris$Species)) 
espnnet2=neuralnet(setosa + versicolor + virginica ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, trainset) 
plot(espnnet2) 

enter image description here

不幸neuralnet是明智的數據,試圖scale解釋變量。

相關問題