这里有一个示例数据框,这是一个机器学习预测。
df <- tibble(
actual = rnorm(100,0,1),
pred = rnorm(100,0,1))
我想测量一下,在过滤了不同范围的数据后,预测实际值的符号的准确性。pred
(即 pred>10
,pred>20
,pred>30
,pred>40
等)。)
下面是我写的一个函数。
predacc <- function(x,n){
x%>%
filter(pred > n)%>%
summarize(acc = mean(sign(actual) == sign(pred)))
}
下面的操作正确地显示了预测值>50时预测符号的准确性。
predacc(df_evalrf,50)
# A tibble: 1 x 1
acc
<dbl>
1 0.854
我想对值进行同样的操作 1:100
,尝试了下面的方法,但没有成功。
map(df,~predacc(.x,seq(1:100,by=1)))
Error in UseMethod("filter_") :
no applicable method for 'filter_' applied to an object of class "c('double', 'numeric')"
你可以使用 。
result <- purrr::map_df(1:100, predacc, x = df)
或者用R字头。
result <- do.call(rbind, lapply(1:100, predacc, x = df))
你确定,你要用 1:100
虽然由于您使用 rnorm
是与 mean = 0
和 sd = 1
. 你是说要用 seq(0, 1, by = 0.01)
?