2016-02-24 61 views
0

我刚开始使用机器学习。我尝试使用C5.0模型进行10次交叉验证。我要求代码返回kappa值。机器学习中使用10倍交叉验证的代码

folds = createFolds(mdd.cohort1$edmsemmancomprej, k=10) 
str(folds) 
mdd.cohort1_train = mdd.cohort1[-folds$Fold01,] 
mdd.cohort1_test = mdd.cohort1[folds$Fold01,] 
library(caret) 
library(C5.0) 
library(irr) 
set.seed(123) 
folds = createFolds(mdd.cohort1$edmsemmancomprej, k=10) 

cv_results = lapply(folds, function(x) 
{mdd.cohort1_train = mdd.cohort1[-x, ] 
mdd.cohort1_test = mdd.cohort1[x, ] 
mdd.cohort1_model = C5.0(edmsemmancomprej ~., data = mdd.cohort1_train) 
mdd.cohort1_pred = predict(mdd.cohort1_model, mdd.cohort1_test) 
mdd.cohort1_actual = mdd.cohort1_test$edmsemmancomprej 
kappa = kappa2(data.frame(mdd.cohort1_actual, mdd.cohort1_pred))$value return(kappa)}) 

提供了以下错误menssage:

Error: unexpected symbol in: 
"mdd.cohort1_actual = mdd.cohort1_test$edmsemmancomprej 
kappa = kappa2(data.frame(mdd.cohort1_actual, mdd.cohort1_pred))$value return" 

没有人知道发生了什么事?提前感谢你!

+0

可能是'return'语句应该放在新行上? – jMathew

+0

如果你是机器学习的新手,你也可以考虑'mlr'库https://mlr-org.github.io/mlr-tutorial/release/html/。 – jMathew

+0

非常感谢,jMathew。现在代码工作了! –

回答

0

没有一个可重复的例子是有点困难,但我认为最后一行的回报分享是原因。为了便于阅读,我重新格式化了您的代码

library(caret) 
library(C5.0) 
library(irr) 

folds = createFolds(mdd.cohort1$edmsemmancomprej, k=10) 

str(folds) 

mdd.cohort1_train = mdd.cohort1[-folds$Fold01,] 
mdd.cohort1_test = mdd.cohort1[folds$Fold01,] 

set.seed(123) 
folds = createFolds(mdd.cohort1$edmsemmancomprej, k=10) 

cv_results = lapply(folds, function(x) { 
    mdd.cohort1_train = mdd.cohort1[-x, ] 
    mdd.cohort1_test = mdd.cohort1[x, ] 
    mdd.cohort1_model = C5.0(edmsemmancomprej ~., data = mdd.cohort1_train) 
    mdd.cohort1_pred = predict(mdd.cohort1_model, mdd.cohort1_test) 
    mdd.cohort1_actual = mdd.cohort1_test$edmsemmancomprej 
    kappa = kappa2(data.frame(mdd.cohort1_actual, mdd.cohort1_pred))$value  
    return(kappa) 
    }) 
+0

非常感谢JackStat。现在代码工作了! –

+0

好,我很高兴。请将我的帖子标记为答案 – JackStat