小编mil*_*.ai的帖子

插入符号()预测与predict.glm()非常不同

我正在尝试使用10倍交叉验证来估计逻辑回归.

#import libraries
library(car); library(caret); library(e1071); library(verification)

#data import and preparation
data(Chile)              
chile        <- na.omit(Chile)  #remove "na's"
chile        <- chile[chile$vote == "Y" | chile$vote == "N" , ] #only "Y" and "N" required
chile$vote   <- factor(chile$vote)      #required to remove unwanted levels 
chile$income <- factor(chile$income)  # treat income as a factor
Run Code Online (Sandbox Code Playgroud)

目标是估计一个glm模型,该模型预测投票"Y"或"N"的结果取决于相关的解释变量,并且基于最终模型,计算混淆矩阵和ROC曲线以掌握不同阈值水平的模型行为.

型号选择导致:

res.chileIII <- glm(vote ~
                           sex       +
                           education +
                           statusquo ,
                           family = binomial(),
                           data = chile)
#prediction
chile.pred <- predict.glm(res.chileIII, type = "response")
Run Code Online (Sandbox Code Playgroud)

产生:

> head(chile.pred)
          1           2 …
Run Code Online (Sandbox Code Playgroud)

r glm confusion-matrix r-caret

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

提高插入符号模型训练速度(R)

我有一个由20个特征和大约300,000个观测值组成的数据集.我正在使用插入符号来训练带有doParallel和四个核心的模型.对于我尝试的方法(rf,nnet,adabag,svmPoly),即使对我的数据进行10%的训练也需要8个多小时.我正在重新采样3次,我的tuneLength是5.我能做些什么来加速这个令人痛苦的缓慢过程?有人建议使用底层库可以加快我的过程10倍,但在我走下去之前我想确保没有其他选择.

performance r machine-learning r-caret

12
推荐指数
2
解决办法
8086
查看次数

在使用公式使用插入符号train()训练的randomForest对象上使用predict()时出错

在64位Linux机器上使用R 3.2.0 with caret 6.0-41和randomForest 4.6-10.

当尝试使用公式对使用包中的函数训练predict()randomForest对象使用该方法时,该函数返回错误.当通过训练和/或使用和而不是公式,这一切都顺利进行.train()caretrandomForest()x=y=

这是一个工作示例:

library(randomForest)
library(caret)

data(imports85)
imp85     <- imports85[, c("stroke", "price", "fuelType", "numOfDoors")]
imp85     <- imp85[complete.cases(imp85), ]
imp85[]   <- lapply(imp85, function(x) if (is.factor(x)) x[,drop=TRUE] else x) ## Drop empty levels for factors.

modRf1  <- randomForest(numOfDoors~., data=imp85)
caretRf <- train( numOfDoors~., data=imp85, method = "rf" )
modRf2  <- caretRf$finalModel
modRf3  <- randomForest(x=imp85[,c("stroke", "price", "fuelType")], y=imp85[, "numOfDoors"])
caretRf <- train(x=imp85[,c("stroke", "price", "fuelType")], y=imp85[, "numOfDoors"], method = "rf")
modRf4 …
Run Code Online (Sandbox Code Playgroud)

r formula predict random-forest r-caret

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

使用插入符号进行生存分析(随机生存林)

有没有办法caret用于生存分析.我真的很喜欢它的易用性.我尝试使用party包在插入符号列表中的随机生存林.

这有效:

library(survival)
library(caret)
library(party)


fitcforest <- cforest(Surv(futime, death) ~ sex+age, data=flchain,
                     controls = cforest_classical(ntree = 1000))
Run Code Online (Sandbox Code Playgroud)

但是使用caret我得到一个错误:

fitControl <- trainControl(## 10-fold CV
  method = "repeatedcv",
  number = 10,
  repeats = 2,
)

cforestfit <- train(Surv(futime, death) ~ sex+age,data=flchain, method="cforest",trControl = fitControl)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Error: nrow(x) == length(y) is not TRUE
Run Code Online (Sandbox Code Playgroud)

有没有办法让这些Surv对象与插入符号一起工作?我可以使用其他以生存分析为导向的包装吗?

谢谢

r r-caret

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

enet()工作但不是通过caret :: train()运行时

我正在尝试运行一个弹性网.从LASSO开始,然后从那里开始.我可以让它直接运行但是当我尝试traincaret包中运行相同的参数时它会失败.我想开始train工作,以便我可以用它来评估模型参数.

# Works
test <- enet( x=x, y=y, lambda=0, trace=TRUE, normalize=FALSE, intercept=FALSE )
# Doesn't
enetGrid <- data.frame(.lambda=0,.fraction=c(.01,.001,.0005,.0001))
ctrl <- trainControl( method="repeatedcv", repeats=5 )
> test2 <- train( x, y, method="enet", tuneGrid=enetGrid, trControl=ctrl, preProc=NULL )
  fraction lambda RMSE Rsquared RMSESD RsquaredSD
1    1e-04      0  NaN      NaN     NA         NA
2    5e-04      0  NaN      NaN     NA         NA
3    1e-03      0  NaN      NaN     NA         NA
4    1e-02      0  NaN      NaN     NA         NA
Error in train.default(x, y, method …
Run Code Online (Sandbox Code Playgroud)

r machine-learning r-caret

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

使用方法gam从插入符号包中训练错误:

我有一个gam我知道可以正常使用的模型R,但是当我尝试train使用该caret包" "相同的模型时,它会返回一个错误,指出输入数据列是列表.有谁理解这个?

我正在运行的代码如下:

library("caret")
library("mgcv")

a <- gam(RW ~ s(Temp0.grd) + s(mld.grd) + s(mean_depth.grd) +
           s(land_dist.grd) + s(slope.grd) + s(npp.grd),
         data=mydata,
         family=binomial)

all.data.gam.train <- 
  train(form=RW ~ s(Temp0.grd) + s(mld.grd) + s(mean_depth.grd) +
          s(land_dist.grd) + s(slope.grd) + s(npp.grd),
        data=mydata,
        method='gam',
        family=binomial
  )
Run Code Online (Sandbox Code Playgroud)

第一个gam模型工作正常,但是train返回以下错误:

    Error in model.frame.default(form = RW ~ s(Temp0.grd) + s(mld.grd) + s(mean_depth.grd) +  : 
  invalid type (list) for variable 's(Temp0.grd)'
Run Code Online (Sandbox Code Playgroud)

直接在公式上运行model.frame.default也会产生这个错误,因此严格来说问题不在于火车.

mydata看起来如下:

> class(mydata)
[1] "data.frame"
> class(mydata$Temp0.grd)
[1] "numeric"
> …
Run Code Online (Sandbox Code Playgroud)

r gam r-caret

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

Caret train方法抱怨有问题; 缺少所有RMSE指标值

在尝试适合gbm或rpart模型时,我曾多次遇到此错误.最后,我能够使用公开数据一致地重现它.我注意到使用CV(或重复的cv)时会发生此错误.当我不使用任何适合控制时,我不会收到此错误.有些人可以说清楚为什么我一直都会得到错误.

fitControl= trainControl("repeatedcv", repeats=5)
ds = read.csv("http://www.math.smith.edu/r/data/help.csv")
ds$sub = as.factor(ds$substance)
rpartFit1 <- train(homeless ~ female + i1 + sub + sexrisk + mcs + pcs, 
                   tcControl=fitControl, 
                   method = "rpart", 
                   data=ds)
Run Code Online (Sandbox Code Playgroud)

r rpart gbm r-caret

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

虚拟变量和preProcess

我有一个数据框,其中包含一些我想用作训练集的虚拟变量glmnet.

因为我正在使用glmnet我想使用preProcess插入符train函数中的选项来居中和缩放功能.我不希望这种转换也应用于虚拟变量.

有没有办法阻止这些变量的转变?

r r-caret

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

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