全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2240 2
2013-07-13
Luis Torgo的《数据挖掘与R语言》第三章关于蒙特卡罗实验一部分给出了一个runLearner函数,结构如下:
> DMwR:::runLearner
function (l, ...)
{
    if (!inherits(l, "learner"))
        stop(l, " is not of class \"learner\".")
    do.call(l@func, c(list(...), l@pars))
}
<environment: namespace:DMwR>


不知道do.call(l@func, c(list(...), l@pars)) 这样写是否正确??

如果现在给定 l 的结果是:
>l
Learner::  "single"

Parameter values
         learner  =  "nnetC"
         size  =  10
         decay  =  0.01
         maxit  =  1000
         linout  =  TRUE
         trace  =  FALSE


如何将以上参数代入do.call()?
能够得到和下面式子一样的结果呢
single(form, train, test, learner = "nnetC", size=10,decay=0.01,maxit=1000)


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-7-13 16:02:36
do.call(l@func, c(list(form, train, test), l@pars))
可能是我之前代入错误了

不知道各位有没有做过类似的蒙特卡罗实现,求交流
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-7-13 16:37:09
> runLearner(l, form, train, test)
错误于single(Status ~ ., list(Status = c(4L, 4L, 4L, 4L, 4L, 4L, 4L,  :
  参数((list(Status = c(4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), Flow = c(22, 15, 16, 19, 20, 18, 14, 14, 15, 14, 15, 22, 16, 17, 17, 16, 17, 18, 14, 12, 15, 15, 17, 14, 14, 13, 14, 16, 15, 14, 15, 19, 14, 17, 17, 14, 17, 16, 14, 16, 18, 16, 13, 14, 18, 15, 15, 13, 17, 14, 15, 16, 11, 13, 13, 14, 15, 13, 15, 13, 14, 13, 14, 13,
15, 14, 14, 13, 14, 15, 14, 13), Occupancy = c(23.67, 18, 18.33, 21.78, 22.78, 17.89, 15.33, 14.33, 17.89, 16, 20.78, 24.33, 21, 19.56, 21.67, 20.11, 27.78, 36.56, 31.22, 28.33, 30.44, 24.89, 31.67, 39.44, 31.44, 30.89, 31.22, 32.33, 31.33, 32.89, 26.22, 37.56, 30.33, 48.11, 39, 33.11, 41, 33.22, 31.56, 39.44, 32.89, 41.33, 29.78, 30.22, 37.67, 40.89, 31.56, 24.56, 34.44, 35.78, 31.33, 34.56, 27.22, 35.56, 35.44, 30.89, 39.44, 27.33, 39, 35.11, 37.33, 24.44, 26.22, 30.89, 32.78, 27.8



> myrun <- function (l, ...)
+ {
+     if (!inherits(l, "learner"))
+         stop(l, " is not of class \"learner\".")
+     do.call(l@func, c(list(...), l@pars))
+ }
>
> myrun(l ,form, train , test)
prec.congestion       prec.free        prec.jam     prec.smooth
              1             NaN             NaN             NaN
rec.congestion        rec.free         rec.jam      rec.smooth
              1             NaN             NaN             NaN
警告信息:
In nnet.formula(form, train, ...) : groups free jam are empty


数据代入原函数就出错,重写一个函数方法一样就能得到结果
被搞崩溃了,谁能告诉我到底是为什么??
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群