提问人:Hack-R 提问时间:1/13/2015 最后编辑:Hack-R 更新时间:1/22/2015 访问量:710
在 Shiny 中使用 predict 和 randomForest 时出错
Errors in using predict with randomForest in Shiny
问:
注意:经过大量的代码实验,我已经完全重写了这个问题
我正在尝试在 1 行数据对象中使用用户输入值来预测用户的类别,但是我收到一个错误,指示我的数据对象的 NA/Inf 值。randomForest
我有一个分类器,我已经在 taining 数据集上进行了训练,并在验证数据集上进行了验证。这是在我在 github 上的文件中完成的,对象被保存为 ,由 读取)。randomForest
analysis.R
rf.rds
server.R
在我读入称为(即)的训练数据,然后仅将第一行提取到 .server.R
x
x.rds
userdf
在“我允许用户输入响应式更新此对象的值”中:ui.R
values <- reactiveValues()
values$df <- userdf
newEntry <- observe({
values$df$bron_badges <- input$bron_badges
values$df$silv_badges <- input$silv_badges
values$df$gold_badges <- input$gold_badges
values$df$reputation <- input$reputation
values$df$views <- input$views
values$df$votes <- input$votes
})
这似乎有效。我之所以这么说,是因为我可以跑:
output$table <- renderTable({data.frame(values$df)})
并观察这些值在我的 UI 中精美更新。
但是,当我尝试运行以下代码来为用户运行预测时,我收到一条错误消息,指出存在 NA:
output$results <- renderText({
{ ds1 <- values$df
x <- x[,sort(names(x))]
ds1 <- ds1[,sort(names(ds1))]
names(ds1) <- colnames(x)
predict(rf, newdata = data.frame(ds1))
}
})
即使我“知道”数据不是来自通过上述行观看更新,并且由于来自的所有初始值都不是.我也尝试过没有陈述的一部分。NA
values$df
ui.R
x
NA
data.frame
predict
有趣的是,如果我用它替换上面的语句,它会告诉我所有 1,033 个值都是 .predict
table(is.na(ds1))
NA
同样有趣的是,如果我在语句中替换为,那么一切都运行良好(是非反应式对象)。ds1
userdf
predict
userdf
如果我用它替换语句,它不会显示任何不匹配的列名(直到添加上述语句,由于在反应式数据帧的列名中对 to 进行了一些奇怪的转换)。predict
setdiff(colnames(x), colnames(ds1))
colnames
_
.
最后,我发现如果我从via访问名称,我会得到“”作为我的错误:rf
rf$forest$ncat
incorrect number of dimensions
output$results <- renderTable({
{ ds1 <- values$df
cn <- rf$forest$ncat
cn <- cn[,sort(names(cn))]
ds1 <- ds1[,sort(names(ds1))]
names(ds1) <- names(cn)#x #rf$forest$xlevels
predict(rf, newdata = data.frame(ds1))
}
})
但是,进行了以下修改:
output$results <- renderTable({
{ ds1 <- values$df
cn <- as.data.frame(t(rf$forest$ncat))
cn <- cn[,sort(names(cn))]
ds1 <- ds1[,sort(names(ds1))]
names(ds1) <- names(cn)#x #rf$forest$xlevels
predict(rf, newdata = data.frame(ds1))
}
})
我的错误又回到了“”。variables in the training data missing in newdata
最小、可重现的例子:https://github.com/hack-r/troubleshooting_predictor_minimal
以下是完整的可重现代码和数据: https://github.com/hack-r/coursera_shiny
答: 暂无答案
上一个:R:我使用%in%有什么问题?
评论
reactiveValues
newEntry
runmodel
observers
userdata()
rf
rf
colnames
data.frame
ds1
ds1<-colnames(x)
ds1
x
ds1 <- colnames(x)
ds1