机器学习中具有 10 倍交叉验证的代码

Posted

技术标签:

【中文标题】机器学习中具有 10 倍交叉验证的代码【英文标题】:Code with 10 fold cross validation in machine learning 【发布时间】:2016-06-06 05:27:20 【问题描述】:

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

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))

给出以下错误信息:

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

有谁知道发生了什么?提前非常感谢您!

【问题讨论】:

可能return 语句应该换行? 如果您不熟悉机器学习,也可以考虑使用 mlr 库 mlr-org.github.io/mlr-tutorial/release/html 非常感谢,jMathew。现在代码工作了! 【参考方案1】:

如果没有可重复的示例,这有点困难,但我认为最后一行的回报共享是原因。为了便于阅读,我重新格式化了你的代码

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)
  )

【讨论】:

以上是关于机器学习中具有 10 倍交叉验证的代码的主要内容,如果未能解决你的问题,请参考以下文章

5倍交叉验证如何理解

绘制一对多 SVM 中 10 倍交叉验证的结果(使用 LibSVM)

如何在 Scikit-Learn 中绘制超过 10 倍交叉验证的 PR 曲线

Tidymodels:在 R 中进行 10 倍交叉验证后,从 TIbble 中取消最佳拟合模型的 RMSE 和 RSQ 值

如何在执行 10 倍交叉验证时在每次拆分时获得 Lasso Regression 中的系数?

Spark2.0机器学习系列之2:基于Pipeline交叉验证ParamMap的模型选择和超参数调优