我正在尝试计算R中的函数,但是,我得到一个奇怪的错误消息,它没有给我任何关于可能出错的提示......
G2M1 $数据只是一个包含数据的矩阵。
library(klaR)
out <- NaiveBayes(x = G2M1$data, grouping = G2M1$labels, usekernel = TRUE, density(G2M1$data, bw = "nrd0", adjust = 1,kernel = "gaussian"))
错误消息:
Error in sum(prior) : invalid 'type' (list) of argument
我不知道为什么,因为我没有定义任何先前的?
答案 0 :(得分:0)
在Stack Overflow上提出问题的第一步是创建一个可重现的示例。这是一个小例子,用户可以输入他们的计算机来测试,诊断和解决您的问题。它不仅可以帮助其他人,还可以帮助您正确评估问题,并在创建示例时找到解决方案。
示例强>
G2M1 <- list(data=as.matrix(iris[-5]), labels=iris[[5]])
这是一个示例数据集,其结构和名称与使用虹膜数据集的问题相同。
重新创建错误
让我们按原样运行你的表达式以查看错误:
library(klaR)
out <- NaiveBayes(x = G2M1$data, grouping = G2M1$labels, usekernel = TRUE, density(G2M1$data, bw = "nrd0", adjust = 1,kernel = "gaussian"))
#Error in sum(prior) : invalid 'type' (list) of argument
现在我们在示例中找到了错误。我们来调查它为什么会发生。让我们看一下密度表达式并将其保存到变量中:
den <- density(G2M1$data, bw = "nrd0", adjust = 1,kernel = "gaussian")
class(den)
#[1] "density"
typeof(den)
#[1] "list"
这是一个清单。它不仅具有密度,还具有其他信息,如使用的调用和模型不需要的坐标。密度本身在哪里?我们查看文档:
y估计的密度值。
让变量y
的子集来查看密度:
head(den$y)
#[1] 0.0003561307 0.0004076448 0.0004647614 0.0005300218 0.0006043244 0.0006864581
这就是该模型所寻求的。我们将den$y
替换为模型调用:
out <- NaiveBayes(x = G2M1$data, grouping = G2M1$labels, usekernel = TRUE, den$y)
成功。将来,请记住为每个人创建一个示例。并使用这些基本的故障排除技术祝你好运