标签: r-caret

R编程,随机森林通过插入符号

我是R的新手,我想使用插入包实现随机森林算法.

是否有任何有用的教程,一步一步?

r random-forest r-caret

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

R 插入符 glmnet 标准化 = FALSE

我正在尝试使用该caret包来处理模型的alpha级别glmnet。问题是我使用的数据都是虚拟变量,我不想glmnet标准化它们。通常,如果我只是使用glmnet或单独使用cv.glmnet,我会添加

standardize = FALSE
Run Code Online (Sandbox Code Playgroud)

是否有caret关闭标准化的设置?

r standardized glmnet r-caret

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

在R中的插入符号中调整模型时如何保持参数不变?

以下代码:

require(caret)
require(plyr)

portuguese_scores = read.table("https://raw.githubusercontent.com/JimGorman17/Datasets/master/student-por.csv",sep=";",header=TRUE, stringsAsFactors = FALSE)
portuguese_scores <- portuguese_scores[,!names(portuguese_scores) %in% c("school", "age", "G1", "G2")]
median_score <- summary(portuguese_scores$G3)['Median']
portuguese_scores$score_gte_than_median <- as.factor(median_score<=portuguese_scores$G3)
portuguese_scores <- portuguese_scores[,!names(portuguese_scores) %in% c("G3")]

portuguese_scores$sex <- as.numeric(mapvalues(portuguese_scores$sex, from = c("M", "F"), to = c(0, 1)))
portuguese_scores$address <- as.numeric(mapvalues(portuguese_scores$address, from = c("U", "R"), to = c(0, 1)))
portuguese_scores$famsize <- as.numeric(mapvalues(portuguese_scores$famsize, from = c("LE3", "GT3"), to = c(0, 1)))
portuguese_scores$Pstatus <- as.numeric(mapvalues(portuguese_scores$Pstatus, from = c("T", "A"), to = c(0, 1)))
portuguese_scores$Mjob <- as.numeric(mapvalues(portuguese_scores$Mjob, from = c("at_home","health","other","services","teacher"), to = …
Run Code Online (Sandbox Code Playgroud)

r r-caret

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

在 R 中使用 Caret 包为“rf”提供极长的运行时间

我正在使用 R(和 Rstudio)rfcaret包中训练模型。训练数据集是一个包含 76k 行和 291 列的数据框。我的代码如下:

library(caret)

myTrControl <- trainControl(method = "repeatedcv",
                            number = 5,
                            repeats = 3,
                            p = 0.75,
                            classProbs = TRUE,
                            summaryFunction = twoClassSummary)

set.seed(64)
myRF <- train(x = myTrain[ , -c(1, 291)],
              y = myTrain$TARGET,
              data = myTrain,
              method = "rf",
              metric = "ROC",
              maximize = TRUE,
              trControl = myTrControl)
Run Code Online (Sandbox Code Playgroud)

它已经运行了 24 小时。有什么方法可以估计需要多长时间?

我读的caret文件,我应该可能已经设置verboseIter = TRUEtrainControl拿到发生了什么事情,而其计算的一些信息。我想没有“同时计算”的方式来请求进度信息,对吗?

而第三个问题:是否有内的任何其他参数trainControltrain我应该经常使用来获取计算的信息,而这是在进步吗?

谢谢!

r random-forest r-caret

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

knnImpute 使用带有 caret 包的分类变量

我有以下 data.table,其中每个唯一x值都与一个唯一y值相关联。然后我强制一个x值作为NAk 最近邻练习的目的:

dt <- data.table(x = rep(c(1:4), 3), 
                 y = rep(c("Brandon", "Erica", "Karyna", "Alex"), 3))
dt[3, 1] <- NA

print(dt)
 #    x       y
 #1:  1 Brandon
 #2:  2   Erica
 #3: NA  Karyna
 #4:  4    Alex
 #5:  1 Brandon
 #6:  2   Erica
 #7:  3  Karyna
 #8:  4    Alex
 #9:  1 Brandon
#10:  2   Erica
#11:  3  Karyna
#12:  4    Alex
Run Code Online (Sandbox Code Playgroud)

参考这个问题的第一个答案,我创建了一个二进制矩阵,dt$y如下所示:

dt.a <- model.matrix(~ y -1 , data …
Run Code Online (Sandbox Code Playgroud)

r knn r-caret

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

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
查看次数

使用 caret 包进行交叉验证的最终模型

我使用 Caret 包中的随机森林方法对我的数据进行了交叉验证,R 表示最终模型是使用 mtry=34 构建的,这是否意味着在最终随机森林(由交叉验证产生)中只有 34 个参数变量在我的数据集中用于在树中分裂?

> output
Random Forest 

 375 samples
  592 predictors
  2 classes: 'alzheimer', 'control' 

  No pre-processing
  Resampling: Cross-Validated (3 fold) 
  Summary of sample sizes: 250, 250, 250 
  Resampling results across tuning parameters:

  mtry  Accuracy   Kappa    
  2   0.6826667  0.3565541
  34   0.7600000  0.5194246
  591   0.7173333  0.4343563

   Accuracy was used to select the optimal model using  the largest value.
   The final value used for the model was mtry = 34.
Run Code Online (Sandbox Code Playgroud)

r classification random-forest cross-validation r-caret

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

插入符号/rfe 错误:“x 和 y 中的样本数应该相同”

我的目标是使用 R 执行交叉验证。第 1-31 列是特征,第 32 列是输出类。
我从 .xls 文件加载数据。但是我对 rfeControl 功能有严重的问题。请看我的代码:

install.packages('e1071')
library(e1071)
install.packages('readxl')
library(readxl)
library(rpart)
install.packages('randomForest')
library(randomForest)
install.packages('party')
library(party)
install.packages('mlbench')
library(mlbench)
install.packages('caret')
library(caret)
#----------------------------------------------------------
# Import Data
getwd()
setwd("working_directory_name")
df <- read_excel('test_data.xls')
#----------------------------------------------------------
# Get Information on your data (optional)
str(df)
table(df$F32)
#----------------------------------------------------------
install.packages('XLConnect')
library(XLConnect)
# Recursive Feature Selection Approach
control <- rfeControl(functions=rfFuncs, method="cv", number=5)
#x = as.vector(unlist(df[, 2:29]))
#y = as.vector(unlist(df[, 32])) 
# Run the algorithm (Features, Ground Truth, Testes SetSizes)
#results <- rfe(x, y, sizes=c(1:28), rfeControl=control) …
Run Code Online (Sandbox Code Playgroud)

validation r r-caret

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

Caret - 基于多个变量创建分层数据集

在 R 包 caret 中,我们是否可以使用函数 createDataPartition()(或 createFolds() 进行交叉验证)基于多个变量创建分层训练和测试集?

以下是一个变量的示例:

#2/3rds for training
library(caret)
inTrain = createDataPartition(df$yourFactor, p = 2/3, list = FALSE)
dfTrain=df[inTrain,]
dfTest=df[-inTrain,]
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,训练集和测试集按“df$yourFactor”分层。但是是否可以使用多个变量(例如“df$yourFactor”和“df$yourFactor2”)进行分层?以下代码似乎有效,但我不知道它是否正确:

inTrain = createDataPartition(df$yourFactor, df$yourFactor2, p = 2/3, list = FALSE)
Run Code Online (Sandbox Code Playgroud)

r r-caret

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