2014-11-17 83 views
1

这里是更新的代码。我的问题是“结果”的输出。作为可读性的格式,我将在下面发布。R神经网络问题

library("neuralnet") 
    library("ggplot2") 
    setwd("C:/Users/Aaron/Documents/UMUC/R/Data For Assignments") 
    trainset <- read.csv("SOTS.csv") 
    head(trainset) 
    ## val data classification 
    str(trainset) 
    ## building the neural network 
    risknet <- neuralnet(Overall.Risk.Value ~ Finance + Personnel + Information.Dissemenation.C, trainset, hidden = 10, lifesign = "minimal", linear.output = FALSE, threshold = 0.1) 
    ##plot nn 
    plot(risknet, rep="best") 

    ##import scoring set 
    score_set <- read.csv("SOSS.csv") 
    ##select subsets-training and scoring match 
    score_test <- subset(score_set, select = c("Finance", "Personnel", "Information.Dissemenation.C")) 
    ##display values of score_test 

    head(score_test) 
    ##neural network compute function score_test and the neural net "risknet" 
    risknet.results <- compute(risknet, score_test) 

    ##Actual value of Overall.Risk.Value variable wanting to predict. net.result = a matrix containing the overall result of the neural network 
    results <- data.frame(Actual = score_set$Overall.Risk.Value, Prediction = risknet.results$net.result) 
    results[1:14, ] 

结果的输出与预期不符。例如,实际数据是介于5和8之间的数字,而“预测”则显示每个结果的.9995 ...的输出。

再次感谢您的帮助。

+0

什么是你所谓的“得分”集?验证集或测试集? –

+0

评分集与训练集的数据完全相同(在变量risknet中显示)。唯一的区别是Overall.Risk.Value的价值 –

回答

0

这是你如何训练和预测:

  1. 使用训练数据来学习模型参数(在你的情况,可变risknet
  2. 使用参数来预测测试数据分数

Here是一个非常类似于你的例子,它解释了这是如何完成的。

0

神经网络中的默认激活函数是“logistic”。当linear.output设置为FALSE时,它确保输出通过激活函数映射到区间[0,1]。(R_Journal(neuralnet) - FraukeGünther)

我刚刚更新了linear.output = TRUE在你的代码和最终结果看起来好多了。

感谢您的帮助!

+0

这是我的回答评论?如果你找到任何有帮助的答案,可以添加一个评论,并且提供/ upvote/aceept答案,而不是发布一个新的答案! –