我在测试预处理组合。脚本生成并循环3200个原始数据版本(n=48、p=30),并评估它们是否适合使用knn、svmRadial、svmPolynomial、randomForest、gbm和C5.0进行分类。训练是通过卡雷特的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恢复到错误消息而不崩溃?
发布于 2014-01-20 10:58:23
C5.0是相对较新的,所以如果有某种内存分配错误警告R崩溃,我不会感到惊讶。如果没有数据集,很难确定原因,但您至少可以通过编写日志信息来缩小错误发生的范围。
将verboseIter = TRUE添加到trainControl选项,并关闭缓冲输出(在R中的Misc菜单中)。
https://stackoverflow.com/questions/21227649
复制相似问题