2016-02-24 63 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