我正在测试预处理组合。该脚本生成并循环处理3200版本的原始数据(n = 48,p = 30),并评估它们是否适合使用knn
,svmRadial
,svmPolynomial
,randomForest
,gbm
和C5.0
进行分类。培训是通过Caret的train
函数完成的。
最小的数据版本具有35行和3列。分类目标变量
有三个与应用程序类。 40%/ 40%/ 20%分配。
由于某些原因,C5.0导致R在1900-2800版本之间崩溃。每次使R崩溃的训练/测试数据版本都不同。运行脚本
与所有其他分类器一起使用时效果很好。
用于C5.0的代码是:
C50_model <- function(train_x, test_x, train_y, test_y){
tryCatch({
C50_fit <- train(train_x, train_y, tuneLength=tuning,
method="C5.0",trControl=bootControl)
C50_pred <- as.character(predict(C50_fit, newdata=test_x))
C50_error <- round(ce(test_y, C50_pred),2)
return(list(C50_pred, C50_error))
}, error= function(e) return(list(NA, NA)) ) # close tryCatch
}
trControl:
bootControl <- trainControl(method = "boot", number = 1, p=0.67)
session 信息是:
R version 3.0.2 (2013-09-25)
Platform: x86_64-w64-mingw32/x64 (64-bit)
C5.0是:
C50_0.1.0-15
是否存在导致R随C5.0崩溃的任何已知条件?
或者我可以做些什么来帮助R恢复到错误消息而不会崩溃?
最佳答案
C5.0是相对较新的,因此,如果有某种内存分配错误阻止R崩溃,这也不会令我感到惊讶。没有数据集,很难确定原因,但是至少可以通过写入日志信息来缩小发生错误时的范围。
将verboseIter = TRUE
添加到trainControl
选项,然后关闭缓冲的输出(在R GUI的“杂项”菜单中)。