我目前正在学习在线数据科学:机器学习课程,要求我们拟合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)的值。 ..
我认为您应该使用类似: