我在dat $ y中遇到错误:尝试使用map()函数计算可能的结果时,$运算符对原子向量无效)>

问题描述 投票:0回答:1

我目前正在学习在线数据科学:机器学习课程,要求我们拟合lm 100次,并获取不同大小的数据集的均值(rmse)和sd(rmse)值n = c(100,500 ,1000,5000,10000)。我们被要求创建一个大小为n的函数并构建数据集,然后运行为拟合100个模型而制作的循环,然后设置种子并使用map()或sapply()函数将新函数应用于n个不同的尺寸。

我执行的代码在运行f1时向我显示“ dat $ y中的错误:$运算符对于原子向量无效”错误这是我的代码:

   library(MASS)
    library(caret)


    ff=function(n){
      Sigma <- 9*matrix(c(1.0, 0.5, 0.5, 1.0), 2, 2)
      dat <- MASS::mvrnorm(n, c(69, 69), Sigma)%>%data.frame() %>% setNames(c("x", "y"))

    }
    set.seed(1,sample.kind = "Rounding")
    n=c(100,500,1000,5000,10000)
    f1=map(n,function(dat){
      rmse=replicate(100,{
        y <- dat$y
        test_index <- createDataPartition(y, times = 1, p = 0.5, list = FALSE)
        train_set <- dat %>% slice(-test_index)
        test_set <- dat %>% slice(test_index)
        fit <- lm(y ~ x, data = train_set)
        y_hat <- fit$coef[1] + fit$coef[2]*test_set$x
        sqrt(mean((y_hat - test_set$y)^2))
      })
      structure(c(mean(rmse),sd(rmse)))
    })

谢谢您的帮助!

我目前正在学习在线数据科学:机器学习课程,要求我们拟合一次lm 100次,并获取n = c()大小不同的数据集的均值(rmse)和sd(rmse)的值。 ..

r machine-learning linear-regression r-caret mse
1个回答
0
投票

我认为您应该使用类似:

© www.soinside.com 2019 - 2024. All rights reserved.