【发布时间】:2021-07-11 19:58:27
【问题描述】:
这让我发疯了,我整天都在浏览类似的帖子,但似乎无法解决我的问题。我有一个经过训练并存储为model 的朴素贝叶斯模型。我正在尝试使用newdata 数据框进行预测,但我不断收到错误 Error: $ operator is invalid for atomic vectors。这是我正在运行的内容:stats::predict(model, newdata = newdata) 其中newdata 是另一个数据框的第一行:new data <- pbp[1, c("balls", "strikes", "outs_when_up", "stand", "pitcher", "p_throws", "inning")]
class(newdata) 给出[1] "tbl_df" "tbl" "data.frame"。
【问题讨论】:
-
如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。
-
我知道对不起,我想知道如何给你模型,但我不确定如何。我可以给你培训代码,但培训大约需要 6 个小时。会给你一个实际的
newdata值行吗? -
也许我可以给你一个.Rdata文件的链接?试试这个谷歌链接,这个模型对于 Github 来说太大了。 drive.google.com/drive/folders/…
-
那真的没那么有用。也许使用内置数据集创建一个简单的示例,该示例显示您用于拟合模型和进行预测的代码。看看你是否能得到同样的错误信息。目前甚至不清楚
model是什么类型的对象。 -
这基本上是我拟合数据的方式,但我正在努力重现同样的错误。
model <- caret::train(iris[, 1:4], iris$Species, method = "nb", preProc = c("center", "scale"))newdata <- as_tibble(newdata)stats::predict(model, newdata = newdata[1, c("Sepal.Width", "Sepal.Length", "Petal.Length", "Petal.Width")])我添加了强制 tibble 的行,因为当我查询我使用的 newdata 时,它已经作为 tibble 回来了。
标签: r r-caret naivebayes