请选择 进入手机版 | 继续访问电脑版
楼主: pwpwpw2009
1674 1

[程序分享] R源代码为什么看不到作者所说的算法 [推广有奖]

  • 3关注
  • 5粉丝

教师

博士生

44%

还不是VIP/贵宾

-

威望
0
论坛币
27134 个
通用积分
5.8645
学术水平
1 点
热心指数
4 点
信用等级
0 点
经验
153 点
帖子
60
精华
0
在线时间
414 小时
注册时间
2009-10-1
最后登录
2024-3-13

pwpwpw2009 发表于 2017-11-8 08:58:18 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
在Hui Zou和Yi Yang编写的gcdnet包中的主函数gcdnet源代码中看不到其所运用的算法,这个函数的代码为:
gcd=function (x, y, nlambda = 100, method = c("hhsvm", "logit", "sqsvm",
    "ls"), lambda.factor = ifelse(nobs < nvars, 0.01, 1e-04),
    lambda = NULL, lambda2 = 0, pf = rep(1, nvars), pf2 = rep(1,
        nvars), exclude, dfmax = nvars + 1, pmax = min(dfmax *
        1.2, nvars), standardize = TRUE, eps = 1e-08, maxit = 1e+06,
    delta = 2)
{
    method <- match.arg(method)
    this.call <- match.call()
    y <- drop(y)
    x <- as.matrix(x)
    np <- dim(x)
    nobs <- as.integer(np[1])
    nvars <- as.integer(np[2])
    vnames <- colnames(x)
    if (is.null(vnames))
        vnames <- paste("V", seq(nvars), sep = "")
    if (length(y) != nobs)
        stop("x and y have different number of observations")
    if (length(pf) != nvars)
        stop("The size of L1 penalty factor must be same as the number of input variables")
    if (lengt
h(pf2) != nvars)
        stop("The size of L2 penalty factor must be same as the number of input variables")
    if (lambda2 < 0)
        stop("lambda2 must be non-negative")
    maxit <- as.integer(maxit)
    lam2 <- as.double(lambda2)
    pf <- as.double(pf)
    pf2 <- as.double(pf2)
    isd <- as.integer(standardize)
    eps <- as.double(eps)
    dfmax <- as.integer(dfmax)
    pmax <- as.integer(pmax)
    if (!missing(exclude)) {
        jd <- match(exclude, seq(nvars), 0)
        if (!all(jd > 0))
            stop("Some excluded variables out of range")
        jd <- as.integer(c(length(jd), jd))
    }
    else jd <- as.integer(0)
    nlam <- as.integer(nlambda)
    if (is.null(lambda)) {
        if (lambda.factor >= 1)
            stop("lambda.factor should be less than 1")
        flmin <- as.double(lambda.factor)
        ulam <- double(1)
    }
    else {
        flmin <- as.double(1)
        if (any(lambda < 0))
            stop("lambdas should be non-negative")
        ulam <- as.double(rev(sort(lambda)))
        nlam <- as.integer(length(lambda))
    }
    fit <- switch(method, hhsvm = hsvmpath(x, y, nlam, flmin,
        ulam, isd, eps, dfmax, pmax, jd, pf, pf2, maxit, lam2,
        delta, nobs, nvars, vnames), logit = logitpath(x, y,
        nlam, flmin, ulam, isd, eps, dfmax, pmax, jd, pf, pf2,
        maxit, lam2, nobs, nvars, vnames), sqsvm = sqsvmpath(x,
        y, nlam, flmin, ulam, isd, eps, dfmax, pmax, jd, pf,
        pf2, maxit, lam2, nobs, nvars, vnames), ls = lspath(x,
        y, nlam, flmin, ulam, isd, eps, dfmax, pmax, jd, pf,
        pf2, maxit, lam2, nobs, nvars, vnames))
    if (is.null(lambda))
        fit$lambda <- lamfix(fit$lambda)
    fit$call <- this.call
    class(fit) <- c("gcdnet", class(fit))
    fit
}

    我怀疑算法在hsvmpath、 logitpath等函数中体现,但这些函数在R以及他们编写的包中根本找不到,所以想问下大侠们如何才能这个所依据的算法。
二维码

扫码加我 拉你入群

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

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

关键词:看不到 源代码 standardize function Standard

pwpwpw2009 发表于 2017-12-10 11:05:03 |显示全部楼层 |坛友微信交流群
已解决

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 16:14