我正在使用 gamlss 包中的示例代码来绘制百分位数曲线:
library(gamlss)
data(abdom)
lms(y,x , data=abdom, n.cyc=30)
Run Code Online (Sandbox Code Playgroud)

它正在绘制自己的一组百分位曲线。我如何选择只绘制第 10、50 和 90% 的曲线?我也想避免绘制点,以便只绘制曲线。谢谢你的帮助。
我正在通过 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 参数?
我的问题与插入符号中提出的问题非常相似 :结合 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 次时,我在训练中得到了一组实例,在验证集中得到了一些实例。我想避免这种情况,但总的来说,我需要对预测值 ( …
我想验证 adata.frame包含具有特定名称的列。理想情况下,这将是一个实用程序函数,我可以只传递data.frame和预期的列名,如果data.frame不包含预期的列,该函数将引发错误。我在下面编写了自己的函数,但是,这似乎已经存在于 R 生态系统中。
我的问题是:
我为此编写的函数示例:
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) 使用 RFE,您可以获得特征的重要性等级,但现在我只能使用包内的模型和参数,例如:lmFuncs(linear model),rfFuncs(random forest)
似乎
caretFuncs
Run Code Online (Sandbox Code Playgroud)
可以对自己的模型和参数做一些自定义设置,但是我不知道细节,正式文档没有给出细节,我想在这个RFE过程中应用svm和gbm,因为这是我当前使用的模型训练,有人知道吗?
我正在寻找从与 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
可以使用mlr?进行递归特征消除功能(rfe)。我知道用插入号可以实现此功能,但是即使有一些有关使用mlr选择功能的文档,我也找不到与rfe等效的文档。
我想在R中做两个向量的笛卡儿
data.frame列名称我当然可以用几行代码来做这件事.
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)