我想你的意思是这段代码
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”中