gpt4 book ai didi

r - 是否可以查询 `R` 函数以获取其参数的默认值?

转载 作者:行者123 更新时间:2023-12-04 14:45:53 24 4
gpt4 key购买 nike

在大多数情况下,函数参数的默认值在文档中给出。
但是,在某些情况下,默认值是根据其他参数(包括数据本身)计算得出的,因此不可能在文档中指定。

例如,我如何发现默认的 lambda用于函数 glmnet 的网格在图书馆glmnet ?
根据文档,默认 lambda根据 nlambda 计算, 默认为 100 , 和 lambda.min.ratio ,这似乎是一个数据派生的值。

当我用给定的数据集运行这个函数时,我想知道 lambda 的值。它使用的。这在使用 cv.glmnet 时特别有用。 , 因为我想知道哪个 lambda '当我不提供一个时,它正在挑选。

样本输入:

library(glmnet)

set.seed(1)
x=rnorm(100)
eps=rnorm(100)

y = 1 + x + x^2 + x^3 + eps

xmat=model.matrix(y~poly(x,10,raw=T),data=data.frame(x=x))

cv.out=cv.glmnet(xmat, y,alpha=0) # What is the lambda used here?
bestlam=cv.out$lambda.min
print(bestlam)


# When a grid is specified, the result is very different and sometimes worse.
grid=10^seq(10,-2,length=100)
cv.out=cv.glmnet(xmat, y,alpha=0, lambda=grid)
bestlam=cv.out$lambda.min
print(bestlam)

示例输出(注意它们非常不同):
0.3619167
0.04037017

最佳答案

如果默认值取决于其他参数的值,那么除了在调用函数时以 Debug模式进入函数外,我没有其他解决方案。您可以使用 debugonce例如:

> debugonce(cv.glmnet)
>
> cv.out=cv.glmnet(xmat, y,alpha=0) # What is the lambda used here?
debugging in: cv.glmnet(xmat, y, alpha = 0)
[...]
Browse[2]> ls()
# [1] "foldid" "grouped" "keep" "lambda" "nfolds" "offset"
# [7] "parallel" "type.measure" "weights" "x" "y"
Browse[2]> lambda
NULL
Browse[2]> c
>

所以对于第一个电话, lambdaNULL .但是,如果您在第二次调用 cv.glmnet 时重复该方法, , 你会看到在那种情况下 lambda是长度为 100 的数值向量。

关于r - 是否可以查询 `R` 函数以获取其参数的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19803263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com