【问题标题】:Neuralnet formula in RR中的神经网络公式
【发布时间】:2016-11-22 02:24:36
【问题描述】:

我是 R 的初学者。

我正在尝试学习如何在 R 中制作神经网络并使用它们来预测输出。 我在网上找到了一个使用波士顿数据集的示例,并正在对其进行调整以测试我的代码。它有效(我的 MSE 为 250 :()但我无法理解这部分代码。

   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])

有人能解释一下这是如何工作的吗?谢谢!

【问题讨论】:

    标签: r machine-learning neural-network prediction


    【解决方案1】:

    我想你的意思是这段代码

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

    所以让我们逐段分解。

    f 是变量名。

    as.formula 将变量类型强制为“公式”类型。其一般形式为Response~Variable_1+Variable_2。也就是说:使用变量 1 和变量 2 来预测响应值。

    paste 是一个连接字符串片段的函数。所以

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

    会给“String”,用 sep="" 说给我一个“”输入之间的分隔符。什么都不是

    在您拥有的代码中,它在第二个粘贴函数中使用了 collapse = " + " ,它在值之间放置了一个加号。

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

    n 是 train_set 中列的名称

    n <- names(train_)
    

    因此 paste(n , collapse = " + ") 将使用每个列名,并在它们之间添加一个 + 号。

    但是,我们不希望“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”中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-20
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      相关资源
      最近更新 更多