2016-02-01 86 views
0

您好我想在R中使用神經網絡函數,所以我可以使用其餘的變量預測整數結果(含義)。 這裏是我使用的代碼:神經網絡在R

library("neuralnet") 

我打算把2/3從神經網絡學習的數據,其餘 測試

ind<-sample(1:nrow(Data),6463,replace=FALSE) 

Train<-Data[ind,] 

Test<-Data[-ind,] 

m <- model.matrix(
    ~meaning + 
    firstLevelAFFIRM + firstLevelDAT.PRSN + firstLevelMODE + 
    firstLevelO.DEF + firstLevelO.INDIV + firstLevelS.AGE.INDIV + 
    secondLevelV.BIN + secondLevelWord1 + secondLevelWord2 + 
    secondLevelWord3 + secondLevelWord4 + thirdLevelP.TYPE, 
    data = Train[,-1]) #(the first column is ID , i am not going to use it) 

PredictorVariables <- paste("m[," , 3:ncol(m),"]" ,sep="") 

Formula <- formula(paste("meaning ~ ", paste(PredictorVariables, collapse=" + "))) 

net <- neuralnet(Formula,data=m, hidden=3, threshold=0.05) 

m.test < -model.matrix(
    ~meaning + 
    firstLevelAFFIRM + firstLevelDAT.PRSN + firstLevelMODE + 
    firstLevelO.DEF + firstLevelO.INDIV + firstLevelS.AGE.INDIV + 
    secondLevelV.BIN + secondLevelWord1 + secondLevelWord2 + 
    secondLevelWord3 + secondLevelWord4 + thirdLevelP.TYPE, 
    data = Test[,-1]) 

net.results <- compute(net, m.test[,-c(1,2)]) #(first column is ID and the second one is the outcome that i am trying to predict) 

output<-cbind(round(net.results$net.result),Test$meaning) 

mean(round(net.results$net.result)!=Test$meaning) 

,我得到了誤判大概是0.01這很好,但我的問題是爲什麼我得到的結果(net.results $ net.result)不是一個整數?

回答

0

我假設你的輸出是線性的。嘗試設置linear.output = FALSE

net <- neuralnet(Formula, data = m, hidden = 3, threshold = 0.05, linear.output = FALSE)

+0

沒有一點用也沒有,現在我得到不同的答案仍然不是整數和所有的人都小於1(0.99 ...) –

+0

我覺得您的公式產生的概率。我知道在nnet包(也可能是神經網絡)中,使用'predict'函數計算結果更容易。在此函數中,您可以將預測結果設置爲類而不是概率。 此外你的目標變量應該是二進制的。我不知道它是否是多項式的,但如果是這種情況,應該使用'class.ind()'。有關該問題的更多信息,請查看以下主題:http://stackoverflow.com/questions/20813039/multinomial-classification-using-neuralnet-package – PvGelder