首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R度量auc()错误消息

R度量auc()错误消息
EN

Stack Overflow用户
提问于 2015-02-19 18:02:49
回答 1查看 901关注 0票数 1

我试图计算auc,但有一个奇怪的问题。当我运行这个脚本时:

代码语言:javascript
复制
rm(list = ls(all = T))
gc()

library(Metrics)
library(glmnet)

nrows <- 92681
set.seed(456)
df1 <- data.frame(act1 = round(runif(nrows), 0), pred1 = runif(nrows))

Metrics::auc(df1$act1, df1$pred1)
glmnet::auc(df1$act1, df1$pred1)

我得到:

代码语言:javascript
复制
> Metrics::auc(df1$act1, df1$pred1)
[1] 0.4930949
> glmnet::auc(df1$act1, df1$pred1)
[1] 0.4930949

当我再添加一行并运行以下代码时:

代码语言:javascript
复制
rm(list = ls(all = T))
gc()

library(Metrics)
library(glmnet)

nrows <- 92682
set.seed(456)
df1 <- data.frame(act1 = round(runif(nrows), 0), pred1 = runif(nrows))

Metrics::auc(df1$act1, df1$pred1)
glmnet::auc(df1$act1, df1$pred1)

我得到:

代码语言:javascript
复制
> Metrics::auc(df1$act1, df1$pred1)
[1] NA
Warning message:
In n_pos * n_neg : NAs produced by integer overflow
> glmnet::auc(df1$act1, df1$pred1)
[1] 0.5011554

知道这是怎么回事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-19 18:21:07

Metrics::auc使用一个公式,其中包含分母中的值(n_pos * n_neg),在这种情况下,它是‘sum(实际== 1) *sum(实际== 0)’,它计算为整数 46308 * 46374 = 2147487192,它超过了机器所能处理的最大整数(即.Machine$integer.max)。

例如:

代码语言:javascript
复制
46308 * 46374
#> 2147487192

as.integer(46308) * as.integer(46374)
#> [1] NA
#> Warning message:
#> In as.integer(46308) * as.integer(46374) : NAs produced by integer overflow
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28613635

复制
相关文章

相似问题

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