标签: r-caret

使用GBM的插入错误,但不是没有插入符号

我一直在使用GBM通过插入符号没有问题,但是从我的数据框中删除一些变量,当它开始失败.我已经尝试了所提到的包的github和cran版本.

这是错误:

> fitRF = train(my_data[trainIndex,vars_for_clust], clusterAssignment[trainIndex], method = "gbm", verbose=T)
Something is wrong; all the Accuracy metric values are missing:
    Accuracy       Kappa    
 Min.   : NA   Min.   : NA  
 1st Qu.: NA   1st Qu.: NA  
 Median : NA   Median : NA  
 Mean   :NaN   Mean   :NaN  
 3rd Qu.: NA   3rd Qu.: NA  
 Max.   : NA   Max.   : NA  
 NA's   :9     NA's   :9    
Error in train.default(my_data[trainIndex, vars_for_clust], clusterAssignment[trainIndex],  : 
  Stopping
In addition: There were 50 or more warnings …
Run Code Online (Sandbox Code Playgroud)

r classification gbm r-caret

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

R - 老鼠 - 机器学习:重新使用从火车到测试集的插补方案

我正在构建一个预测模型,并且正在使用该mice程序包来训练我的训练集中的NA.由于我需要为我的测试集重复使用相同的插补方案,如何将其重新应用于我的测试数据?

# generate example data
set.seed(333)
mydata <- data.frame(a = as.logical(rbinom(100, 1, 0.5)),
                     b = as.logical(rbinom(100, 1, 0.2)),
                     c = as.logical(rbinom(100, 1, 0.8)),
                     y = as.logical(rbinom(100, 1, 0.6)))

na_a <- as.logical(rbinom(100, 1, 0.3))
na_b <- as.logical(rbinom(100, 1, 0.3))
na_c <- as.logical(rbinom(100, 1, 0.3))
mydata$a[na_a] <- NA
mydata$b[na_b] <- NA
mydata$c[na_c] <- NA

# create train/test sets
library(caret)
inTrain <- createDataPartition(mydata$y, p = .8, list = FALSE)
train <- mydata[ inTrain, ] 
test <-  mydata[-inTrain, ]

# impute NAs …
Run Code Online (Sandbox Code Playgroud)

r machine-learning r-mice r-caret

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

Caret包findCorrelation()函数

你好我的findCorrelation()函数有问题,这是我的输入和输出:

findCorrelation(train, cutoff = .50, verbose = FALSE)
Run Code Online (Sandbox Code Playgroud)

findCorrelation_exact出错(x = x,cutoff = cutoff,verbose = verbose):相关矩阵不对称

有谁知道为什么会这样?

r correlation r-caret

6
推荐指数
2
解决办法
7870
查看次数

如何从插入包拆分数据创建createDataPartition函数?

从文档:

对于自举样本,使用简单的随机采样.

对于其他数据分割,当y是试图平衡分裂内的类分布的因素时,随机采样在y的水平内完成.

对于数字y,样本基于百分位数分组为组,并且在这些子组内进行采样.

对于createDataPartition,百分位数通过groups参数设置.

我不明白为什么需要这种"平衡"的东西.我认为我从表面上理解它,但任何额外的见解都会非常有用.

r subset data-partitioning r-caret

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

lme4 glmer 用于 r 插入符包火车功能

我正在尝试将该glm方法caret::train用于广义线性混合效应模型。我使用以下代码来设置该功能:

`GLMERmod <- list(type="Classification", library="lme4", loop=NULL)

parameters <- data.frame(parameter="parameter", class="character", 
label="parameter")

GLMERmod$parameters <- parameters


grid <- function (x, y, len = NULL, search = "grid"){
  data.frame(parameter = "none")
 } 



 GLMERmod$grid <- grid


 fit <- 
 function (x, y, wts, param, lev, last, classProbs, ...) 
 {
    dat <- if (is.data.frame(x)) 
        x
    else as.data.frame(x)
    dat$.outcome <- y
    if (length(levels(y)) > 2) 
        stop("glm models can only use 2-class outcomes")
    theDots <- list(...)
    if (!any(names(theDots) == "family")) {
         theDots$family <- if …
Run Code Online (Sandbox Code Playgroud)

r training-data glm mixed-models r-caret

6
推荐指数
0
解决办法
1342
查看次数

Caret method = "rf" 警告消息:无效 ## mtry:重置到有效范围内

我正在从事 Coursera 机器学习项目。目标是对以下数据集执行预测建模。

> summary(training)
   roll_belt        pitch_belt          yaw_belt       total_accel_belt  gyros_belt_x      
 Min.   :-28.90   Min.   :-55.8000   Min.   :-180.00   Min.   : 0.00    Min.   :-1.040000  
 1st Qu.:  1.10   1st Qu.:  1.7600   1st Qu.: -88.30   1st Qu.: 3.00    1st Qu.:-0.030000  
 Median :113.00   Median :  5.2800   Median : -13.00   Median :17.00    Median : 0.030000  
 Mean   : 64.41   Mean   :  0.3053   Mean   : -11.21   Mean   :11.31    Mean   :-0.005592  
 3rd Qu.:123.00   3rd Qu.: 14.9000   3rd Qu.:  12.90   3rd Qu.:18.00    3rd Qu.: 0.110000  
 Max.   :162.00   Max.   : 60.3000   Max. …
Run Code Online (Sandbox Code Playgroud)

r random-forest r-caret

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

如何在 GridSearchCV 中正确选择最佳模型 - sklearn 和 caret 都做错了

考虑 3 个数据集训练/验证/测试。GridSearchCV()默认情况下选择具有最高交叉验证分数的最佳模型。在预测需要准确的现实环境中,这是选择最佳模型的可怕方法。原因是它应该如何使用:

  • 模型的训练集以学习数据集

  • Val 设置用于验证模型在训练集中学到的内容并更新参数/超参数以最大化验证分数。

  • 测试集 - 在未见过的数据上测试您的数据。

  • 最后,在实时环境中使用模型并记录结果,看看结果是否足以做出决策。令人惊讶的是,许多数据科学家仅仅选择验证分数最高的模型,就冲动地在生产中使用他们训练过的模型。我发现gridsearch选择的模型严重过度拟合,并且在预测看不见的数据方面比默认参数做得更差。

我的做法:

  • 手动训练模型并查看每个模型的结果(以某种循环方式,但效率不高)。这是非常手动且耗时的,但我得到的结果比gridsearch好得多。我希望这是完全自动化的。

  • 为我想要选择的每个超参数绘制验证曲线,然后选择显示训练集和验证集之间差异最小的超参数,同时最大化两者(即训练= 98%,验证= 78%确实很糟糕,但训练= 72% ,val=70% 是可以接受的)。

正如我所说,我想要一种更好的(自动化)方法来选择最佳模型。

我正在寻找什么样的答案:

我想最大化训练集和验证集中的分数,同时最小化训练集和验证集之间的分数差异。考虑以下网格搜索算法的示例:有两种模型:

Model A: train score = 99%, val score = 89%
Model B: train score = 80%, val score = 79%
Run Code Online (Sandbox Code Playgroud)

B 型是一个更可靠的模型,我随时都会选择 B 型而不是 A 型。它不太适合,并且预测是一致的。我们知道会发生什么。然而,gridsearch将选择模型 A,因为 val 分数更高。我发现这是一个常见问题,并且在互联网上没有找到任何解决方案。人们往往过于关注在学校学到的东西,而没有真正考虑选择过度拟合模型的后果。我看到了关于如何使用包中的gridsearch并让他们为您选择模型的冗余帖子,但没有看到如何实际选择最佳模型。

到目前为止,我的方法非常手动。我想要一种自动化的方式来做到这一点。

我目前所做的是这样的:

gs = GridSearchCV(model, params, cv=3).fit(X_train, y_train) # X_train and y_train consists …
Run Code Online (Sandbox Code Playgroud)

python r scikit-learn r-caret gridsearchcv

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

caret rpart 决策树绘制结果

我正在训练一个基于Kaggle心脏病数据的决策树模型。

由于我也在使用 10 倍 CV 构建其他模型,因此我尝试使用带有 rpart 方法的 caret 包来构建树。然而,情节结果很奇怪,因为“铊”应该是一个因素。为什么显示“thaliumnormal <0.5”?这是否意味着如果“铊”==正常“然后走左边的路线“是”,否则走右边的路线“否”?

非常感谢!

使用fancyRpartPlot的插入符号rpart决策树图

编辑:我很抱歉没有提供足够的背景信息,这似乎引起了一些混乱。“铊”是一个变量,代表一种用于检测冠状动脉狭窄(又名狭窄)的技术。它是一个具有三个级别(正常、固定缺陷、可逆缺陷)的因素。

数据结构

此外,我想让图表更具可读性,例如代替“thliumnormal < 0.5”,它应该类似于“thlium = normal”。我可以通过直接使用 rpart 来实现这个目标(见下文)。

rpart 决策树图

但是,您可能已经注意到树是不同的,尽管我使用了带有 caret rpart CV 10 折的推荐 cp 值(请参阅下面的代码)。

代码 推荐的cp,用于使用fancyRpartplot的rpart树

我了解这两个包可能会导致一些差异。理想情况下,我可以使用插入符号和方法 rpart 来构建树,以便它与插入符号中构建的其他模型对齐。有谁知道我如何使用 caret rpart 构建的树模型的绘图标签更容易理解?

r decision-tree rpart r-caret

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

在 R 中暂停和恢复插入符训练

假设我将caret在 R 中进行培训,但我想将此培训分为两个运行会话。

library(mlbench)
data(Sonar)
library(caret)
set.seed(998)
inTraining <- createDataPartition(Sonar$Class, p = .75, list = FALSE)
training <- Sonar[ inTraining,]
testing  <- Sonar[-inTraining,]

# First run session
nn.partial <- train(Class ~ ., data = training, 
                method = "nnet",
                 max.turns.of.iteration=5) # Non-existent parameter. But represents my goal
Run Code Online (Sandbox Code Playgroud)

让我们假设nn整个对象我只有一个部分对象,它在第 5 回合(即nn.partial)之前具有训练信息。因此,将来我可以运行以下代码来完成训练工作:

library(mlbench)
data(Sonar)
library(caret)
set.seed(998)
inTraining <- createDataPartition(Sonar$Class, p = .75, list = FALSE)
training <- Sonar[ inTraining,]
testing  <- Sonar[-inTraining,]

nn <- train(Class ~ ., …
Run Code Online (Sandbox Code Playgroud)

parallel-processing r machine-learning neural-network r-caret

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

R 中的 NearZeroVar 是什么?

我有相当大的数据集,我想在其中排除方差相当低的列,这就是为什么我想使用短语 NearZeroVar。但是,我确实很难理解 freqCut 和 uniqueCut 的作用以及它们如何相互影响。我已经阅读了 R 中的解释,但这并没有真正帮助我解决这个问题。如果有人能给我解释一下,我将非常感激!

statistics r variance r-caret

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