【问题标题】:NNet simple modelingNNet 简单建模
【发布时间】:2015-05-31 18:02:08
【问题描述】:

我正在尝试进行简单的神经网络建模,但 NNet 结果给我的结果很差。 我希望 nnet 模型学习的只是“输出 = 0.5 x 输入”模型,但预测结果显示所有“1”。 怎么了?

library(neuralnet)
traininginput <- as.data.frame(runif(50,min=1,max=100))
trainingoutput <- traininginput/2

trainingdata<-cbind(traininginput,trainingoutput)
colnames(trainingdata)<-c("Input","Output")

net.sqrt2 <- nnet(trainingdata$Output~trainingdata$Input,size=0,skip=T, linout=T)


Testdata<-as.data.frame(1:50)
net.result2<-predict(net.sqrt2, Testdata)

cleanoutput2 <- cbind(Testdata,Testdata/2,as.data.frame(net.result2))
colnames(cleanoutput2)<-c("Input2","Expected Output2","Neural Net Output2")
print(cleanoutput2)

【问题讨论】:

    标签: r machine-learning nnet


    【解决方案1】:
    library(nnet)
    traininginput <- as.data.frame(runif(50,min=1,max=100))
    trainingoutput <- traininginput/2
    
    trainingdata<-cbind(traininginput,trainingoutput)
    colnames(trainingdata)<-c("Input","Output")
    
    net.sqrt2 <- nnet(Output~Input, data=trainingdata, size=0,skip=T, linout=T)
    
    
    Testdata<-data.frame(Input=1:50)
    net.result2<-predict(net.sqrt2, newdata = Testdata, type="raw")
    
    cleanoutput2 <- cbind(Testdata,Testdata/2,as.data.frame(net.result2))
    colnames(cleanoutput2)<-c("Input2","Expected Output2","Neural Net Output2")
    print(cleanoutput2)
    

    您在 nnet 中使用了 predictformula 错误。 Predict 预计 newdata 需要是 data.frame,其中包含模型的输入列(即在本例中称为 Input 的列)。 nnet 中的 formula 不能通过对数据的文字调用来构建。它是象征性的,所以它应该是数据中列的名称。另外,您使用的包不是neuralnet,而是nnet

    【讨论】:

    • 谢谢@iShouldUseAName。有用!我还有两个问题; 1) 当我使用 'net.result2
    • @WonShin 返回net.sqrt2的拟合值,即训练数据的拟合值。如果您不知道type 的“原始”与“类”是什么,那么您就没有使用nnet 的业务。 “raw”输出实际计算值并将模型视为回归,而“class”将模型视为分类并给出预测类。如果答案适合您,您应该选择它作为答案和/或投票。
    猜你喜欢
    • 1970-01-01
    • 2013-09-06
    • 2021-12-24
    • 1970-01-01
    • 2015-08-09
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多