首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >10折交叉验证-函数问题

10折交叉验证-函数问题
EN

Stack Overflow用户
提问于 2014-11-14 20:31:18
回答 1查看 208关注 0票数 0

我已经创建了一个函数来对来自库(MASS)的数据集birthwt执行10折交叉验证。函数中的代码正在做我想让它做的事情。但是,我想使用函数外部返回的值,但不能在函数外部访问mean_mrate变量。

我的代码是:

代码语言:javascript
运行
复制
library(MASS)

tenfold3 = function() {

  fold = 10
  end = nrow(birthwt)
  fold_2 = floor(end/fold)

  misclasrate=numeric()

  for(i in 1:10){

    df_i = birthwt[sample(nrow(birthwt)),] # random sort the dataframe birthwt

    tester = df_i[1:fold_2,]  # remove first tenth of rows - USE PREDICT ON THIS DATA
    trainer = df_i[-c(1:fold_2),]  # all other than the first tenth of rows - USE GLM ON THIS DATA

    #mod = glm(low~age,family=binomial,data=trainer)

    mod = glm(low~age+lwt+race+smoke+ptl+ht+ui+ftv,family=binomial,data=trainer)
    ypred = predict(mod,data=tester,type='response')
    ypred = trunc(0.5+predict(mod,data=tester,type='response')) # predicted values

    val_df = data.frame(trainer[,1],ypred) 
    names(val_df) = c('train','ypred')

    val_df$misclas = (val_df$train == val_df$ypred)
    misclasrate[i] = 1-sum(val_df$misclas) / nrow(val_df)
    mean_mrate = signif(mean(misclasrate),4)
    g = cbind(misclasrate[i],mean_mrate)
    return(mean_mrate)

  }

}
EN

回答 1

Stack Overflow用户

发布于 2014-11-14 21:13:36

如果您像这样调用函数:

代码语言:javascript
运行
复制
result = tenfold3()

result变量将等于函数内部的mean_mrate变量。

请注意,return脱离了函数,并且只执行循环中的第一次迭代。此外,更类似R的风格是将for循环中的内容包装在一个函数中,并使用lapply调用该函数10次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26930101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档