【问题标题】:Optimize a list of inputs as a variable or function in R [duplicate]将输入列表优化为R中的变量或函数[重复]
【发布时间】:2020-07-09 05:24:48
【问题描述】:

我正在尝试自动化我的 R 脚本的这一部分,但我不知道如何。本质上,我有这个代码:

  currentmatrix <- datas[,,i]
  data <- as.data.frame(currentmatrix)
  #mod #
  colnames(data) <- c("in1","in2","in3","in4","in5","in6", "in7", "in8", "in9", "in10", "out") #change depending on number of inputs and add to nnet training
  
  #mod #
  nnet <- neuralnet(out~in1+in2+in3+in4+in5+in6+in7+in8+in9+in10, data, hidden=hidden, threshold = threshold, stepmax = 10^7,err.fct = "ce",linear.output = F,likelihood = T)
  

现在,我有 "in1","in2" 等,我希望这是一个变量,这样我就可以简单地引用 neuralnet(var,data,hidden=hidden,...),而不是每次我想更改数字时都输入函数的输入的输入。例如,我想要一个函数ff(x) 为其创建名为x 的字符串in[x],然后我可以写 colnames(data) &lt;- c(f(x))nnet &lt;- neuralnet(out~f_sum,...) 或类似的东西。

有没有办法做到这一点?谢谢!

【问题讨论】:

    标签: r performance optimization neural-network


    【解决方案1】:

    您可以使用返回公式对象的reformulate

    formula <- reformulate(paste0('in', 1:10), 'out')
    formula
    #out ~ in1 + in2 + in3 + in4 + in5 + in6 + in7 + in8 + in9 + in10
    

    您也可以使用列名来生成公式。

    formula <- reformulate(names(data)[1:10], 'out')
    

    这可以用在neuralnet函数中。

    nnet <- neuralnet(formula, data, hidden=hidden, threshold = threshold, 
                       stepmax = 10^7,err.fct = "ce",linear.output = F,likelihood = T)
    

    【讨论】:

    • 这对neuralnet 输入非常有效,谢谢! colnames(data) 行是否可以做类似的事情?如果是上面的另一段代码就完全没问题了。
    • 你可以使用colnames(data) &lt;- c(paste0('in', 1:10), 'out')
    • 效果很好,谢谢!我需要对其进行更多测试,但我认为这是解决方案:)。
    猜你喜欢
    • 2017-05-25
    • 2015-10-05
    • 2022-12-07
    • 2021-08-07
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 2022-01-12
    相关资源
    最近更新 更多