我正在尝试在插入符号中使用train()
以适应分类模型,但是我遇到了某种未处理的异常,并且在R控制台中输出任何错误信息之前我的R会话崩溃了。
Windows错误:
Windows终端前端的R已停止工作
我正在运行Windows 7,R 3.0.2,插入6.0-21,并尝试在R Studio的32/64版本上运行,在R Studio中直接在R控制台中运行,并获得相同的结果每一次。
以下是我的火车电话:
library("AppliedPredictiveModeling")
library("caret")
data("AlzheimerDisease")
data <- data.frame(predictors, diagnosis)
tuneGrid <- expand.grid(interaction.depth = 1:2, n.trees = 100, shrinkage = 0.1)
trainControl <- trainControl(method = "cv", number = 5, verboseIter = TRUE)
gbmFit <- train(diagnosis ~ ., data = data, method = "gbm", trControl = trainControl, tuneGrid = tuneGrid)
使用此参数网格时不会再出现错误:
tuneGrid <- expand.grid(interaction.depth = 1, n.trees = 100:101, shrinkage = 0.1)
但是,我仍在nan
列中获取所有ValidDeviance
个。这是正常的吗?
注意:我的原始问题已解决,这是评论部分的延续。格式化评论部分中的代码块是不可读的,所以我在这里发布它。这不再是关于插入符号的问题,而是gbm。
然而,我仍然遇到问题,使用指定了cv.folds的单个预测器直接调用gbm。这是代码:
library("AppliedPredictiveModeling")
library("caret")
data("AlzheimerDisease")
diagnosis <- as.numeric(diagnosis)
diagnosis[diagnosis == 1] <- 0
diagnosis[diagnosis == 2] <- 1
data <- data.frame(diagnosis, predictors[, 1])
gbmFit <- gbm(diagnosis ~ ., data = data, cv.folds = 5)
同样,这可以在不指定cv.folds的情况下工作,但是使用它,会返回错误:
Error in checkForRemoteErrors(val) : 5 nodes produced errors; first error: incorrect number of dimensions
答案 0 :(得分:1)
当method = 'gbm'
与单个模型(即nrow(tuneGrid) == 1
)一起使用时,会发生错误。我即将发布一个新版本,所以我将在该版本中解决这个问题。
一方面注意......看起来你想做分类。在这种情况下,y
应该是一个因素(你不应该只使用整数作为类),否则它将进行回归。这些更改现在可以使用:
y <- factor(paste("Class", y, sep = ""))
和
tuneGrid <- expand.grid(interaction.depth = 1,
n.trees = 100:101,
shrinkage = 0.1)
谢谢,
最高