【发布时间】:2018-03-19 00:02:59
【问题描述】:
我在尝试为通过嘎嘎声运行的随机森林模型生成提升图时遇到以下错误:
预测错误(crs$pr, no.miss): 类数不等于 2。 ROCR 目前只支持二分类任务的评估。
我的代码如下: # 评估模型性能。
# Lift Chart: requires the ROCR package.
library(ROCR)
# Obtain predictions for the rf model on TBA_jul21c.csv [**train**].
crs$pr <- predict(crs$rf, newdata=na.omit(crs$dataset[crs$sample, c(crs$input, crs$target)]), type="prob")[,2]
# Remove observations with missing target.
no.miss <- na.omit(na.omit(crs$dataset[crs$sample, c(crs$input, crs$target)])$targetvar)
miss.list <- attr(no.miss, "na.action")
attributes(no.miss) <- NULL
if (length(miss.list))
{
pred <- prediction(crs$pr[-miss.list], no.miss)
} else
{
pred <- prediction(crs$pr, no.miss)
}
# Convert rate of positive predictions to percentage.
per <- performance(pred, "lift", "rpp")
per@x.values[[1]] <- per@x.values[[1]]*100
# Plot the lift chart.
plot(per, col="#CC0000FF", lty=1, xlab="Caseload (%)", add=FALSE)
我的数据集有 127 个变量,包括一个带有 Y/N 标签的目标变量。我正在按如下方式读取数据集:
crs$dataset <- read.csv("file:///C:/MastersC/TBA_jul21c.csv", na.strings=c(".", "NA", "", "?"), strip.white=TRUE, encoding="UTF-8")
#============================================================
# Rattle timestamp: 2015-07-22 08:36:53 x86_64-w64-mingw32
# Note the user selections.
# Build the training/validate/test datasets.
set.seed(crv$seed)
crs$nobs <- nrow(crs$dataset) # 72824 observations
crs$sample <- crs$train <- sample(nrow(crs$dataset), 0.7*crs$nobs) # 50976 observations
crs$validate <- sample(setdiff(seq_len(nrow(crs$dataset)), crs$train), 0.15*crs$nobs) # 10923 observations
crs$test <- setdiff(setdiff(seq_len(nrow(crs$dataset)), crs$train), crs$validate) # 10925 observations
我认为它与目标变量有关,但我不确定。任何帮助将不胜感激,因为我已经坚持了几个小时。到此为止,这是我的第一个 stackoverflow 帖子,所以如果我没有正确发布,请随时责备我。 非常感谢
【问题讨论】:
-
你能把你的问题提炼成一个可重复的例子吗?
-
您的假设应该是正确的:您的目标变量中有多少不同的值?我假设实际上有超过 2 个(可能是“丢失”或其他内容的文本?
-
是的,只有两个不同的值“Y”和“N”——这使得错误消息难以理解
-
Roman,您在寻找什么有助于提炼问题?
-
更新:我刚刚弄明白了。我的数据集中有太多缺失值,以至于他们几乎擦除了所有记录以进行评估。
标签: r