我正在测试预处理组合。该脚本生成并循环3200个版本的原始数据(n = 48,p = 30),并使用knn
,svmRadial
,svmPolynomial
,randomForest
评估其对分类的适用性,gbm
和C5.0
。培训是通过Caret的train
功能完成的。
最小的数据版本有35行3列。分类目标变量 有app的三个班级。 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)
会话信息是:
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恢复到错误信息而不会崩溃?
答案 0 :(得分:0)
C5.0相对较新,所以如果有某种内存分配错误导致R崩溃,我不会感到惊讶。如果没有数据集,很难确定原因,但是通过编写日志信息,您至少可以在发生错误时缩小范围。
将verboseIter = TRUE
添加到trainControl
选项,然后关闭缓冲输出(在R GUI的Misc菜单中)。