小编jmu*_*amp的帖子

在 R 中使用 gamlss::lms 选择百分比曲线

我正在使用 gamlss 包中的示例代码来绘制百分位数曲线:

library(gamlss) 
data(abdom)
lms(y,x , data=abdom, n.cyc=30)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

它正在绘制自己的一组百分位曲线。我如何选择只绘制第 10、50 和 90% 的曲线?我也想避免绘制点,以便只绘制曲线。谢谢你的帮助。

r curve-fitting percentile gamlss

2
推荐指数
1
解决办法
1602
查看次数

caret::train 传递额外的参数 rpart

我正在通过 caret::train 函数使用 rpart 构建决策树。我想要做的是将 rpart 的 minsplit 参数设置为等于 1,以便之后用 cp 修剪它。我从这里得到的是参数应该在 train 函数的 ... 中传递。但这不起作用。一个最小的可重现示例:

mod1 <- train(Species ~ ., iris, method = "rpart", tuneGrid = expand.grid(cp = 0), minsplit=1)
mod2 <- rpart(Species ~ ., iris, cp=0, minsplit=1)
Run Code Online (Sandbox Code Playgroud)

我得到的是 mod1$finalModel 和 mod2 完全不同。我希望 mod1$finalModel 就像 mod2(即完全过拟合)。我不能在 tuneGrid 上传递参数,因为它只接受一个 cp 列。

所以我的问题是:是否有插入符号在 train 函数中传递参数 minsplit=1 然后交叉验证 cp 参数?

r cp rpart r-caret

2
推荐指数
1
解决办法
3222
查看次数

插入符号:结合分层 createMultiFolds (repeatedCV) 和 groupKFold

我的问题与插入符号中提出的问题非常相似 :结合 createResample 和 groupKFold

唯一的区别:我需要在分组后创建分层折叠(也重复 10 次)而不是自举重采样(据我所知没有分层),以便将它与插入符号的 trainControl 一起使用。以下代码使用 10 倍重复的 CV,但我无法包含基于“ID” ( df$ID)的数据分组。

# creating indices
cv.10.folds <- createMultiFolds(rf_label, k = 10, times = 10)
# creating folds    
ctrl.10fold <- trainControl(method = "repeatedcv", number = 10, repeats = 10, index = cv.10.folds)
# train
rf.ctrl10 <- train(rf_train, y = rf_label, method = "rf", tuneLength = 6,
                       ntree = 1000, trControl = ctrl.10fold, importance = TRUE)
Run Code Online (Sandbox Code Playgroud)

这是我的实际问题:我的数据包含许多组,每个组由 20 个实例组成,具有相同的“ID”。因此,当使用 10 倍 CV 重复 10 次时,我在训练中得到了一组实例,在验证集中得到了一些实例。我想避免这种情况,但总的来说,我需要对预测值 ( …

r cross-validation r-caret

2
推荐指数
1
解决办法
2504
查看次数

R 中用于验证 data.frame 上特定列是否存在的函数

我想验证 adata.frame包含具有特定名称的列。理想情况下,这将是一个实用程序函数,我可以只传递data.frame和预期的列名,如果data.frame不包含预期的列,该函数将引发错误。我在下面编写了自己的函数,但是,这似乎已经存在于 R 生态系统中。

我的问题是:

  1. 这样的函数(或单行函数)是否已经存在于基础 R 或通用包中?
  2. 如果没有,对我的功能有什么建议(如下)?

我为此编写的函数示例:

validate_df_columns <- function(df, columns) {
    chr_df <- deparse(substitute(df))
    chr_columns <- paste(columns, collapse = ", ")
    if (!('data.frame' %in% class(df))) {
        stop(paste("Argument", df, "must be a data.frame."))
    }
    if (sum(colnames(df) %in% columns) != length(columns)) {
        stop(paste(chr_df, "must contain the columns", chr_columns))
    }
}

validate_df_columns(data.frame(a=1:3, b=4:6), c("a", "b", "c'"))
## Error in validate_df_columns(data.frame(a = 1:3, b = 4:6), c("a", "b",  : 
##   data.frame(a = 1:3, b …
Run Code Online (Sandbox Code Playgroud)

validation r dataframe

2
推荐指数
1
解决办法
702
查看次数

R在RFE(递归特征消除)中使用我自己的模型来选择重要特征

使用 RFE,您可以获得特征的重要性等级,但现在我只能使用包内的模型和参数,例如:lmFuncs(linear model),rfFuncs(random forest) 似乎

caretFuncs
Run Code Online (Sandbox Code Playgroud)

可以对自己的模型和参数做一些自定义设置,但是我不知道细节,正式文档没有给出细节,我想在这个RFE过程中应用svm和gbm,因为这是我当前使用的模型训练,有人知道吗?

r svm feature-selection rfe r-caret

1
推荐指数
1
解决办法
1539
查看次数

如何从python pygam.LinearGAM中提取截距参数

我正在寻找从与 pygam 拟合的模型中提取拟合参数。这是一个可重现的示例。

from pygam import LinearGAM, s, f
from pygam.datasets import wage
X, y = wage()
gam = LinearGAM(s(0) + s(1) + f(2)).fit(X, y)
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的一些事情。

#gam.summary() ## This does not show it.
#gam.intercept_ ## This does not exit.
#gam.terms.info ## This does not contain it.
#gam.partial_dependence(-1) ## This raises an error.
Run Code Online (Sandbox Code Playgroud)

这是一个相关的 GitHub 问题,似乎尚未实现: https: //github.com/dswah/pyGAM/issues/85

python gam pygam

1
推荐指数
1
解决办法
2024
查看次数

使用MLR消除递归功能

可以使用mlr?进行递归特征消除功能(rfe)。我知道用插入号可以实现此功能,但是即使有一些有关使用mlr选择功能的文档,我也找不到与rfe等效的文档。

r r-caret mlr

0
推荐指数
1
解决办法
171
查看次数

一个衬里用于两个向量的笛卡尔,其中集合的名称和字符串中的字符串AsFactors = FALSE

我想在R中做两个向量的笛卡儿

  1. 返回data.frame列名称
  2. 返回字符列而不是因子

我当然可以用几行代码来做这件事.

df <- merge(1:3, letters[1:3], all = TRUE)
colnames(df) <- c("number", "letter")
df$letter <- as.character(df$letter)
str(df)
## 'data.frame':    9 obs. of  2 variables:
##  $ number: int  1 2 3 1 2 3 1 2 3
##  $ letter: chr  "a" "a" "a" "b" ...
Run Code Online (Sandbox Code Playgroud)

但理想情况下,这将是一个单行,如下面的代码(不产生所需的输出).

df2 <- merge(c(number = 1:3),
             c(letter = letters[1:3]), all = TRUE, stringsAsFactors = FALSE)
str(df2)
## 'data.frame':    9 obs. of  2 variables:
##  $ x: int  1 2 3 …
Run Code Online (Sandbox Code Playgroud)

merge r cartesian-product dplyr data.table

0
推荐指数
1
解决办法
49
查看次数