朴素贝叶斯 2 类分类,下标越界
Posted
技术标签:
【中文标题】朴素贝叶斯 2 类分类,下标越界【英文标题】:Naive Bayes 2-class classification, subscript out of bounds 【发布时间】:2018-10-17 17:46:33 【问题描述】:有两个数据框:trainReady
(288obs.) 和 testReady
(112obs.)。这些数据帧包含 55 个属性(54 个连续属性和 1 个二进制类属性)。我已经将这 54 个属性离散化为 10 个部门、级别(假设每个级别的观察数量相同)。 obs的数量。 trainReady
中的两个班级几乎相等。在testReady
也是。类属性被视为因素。下面我发布一些数据帧:trainReady
测试就绪
当我尝试运行这些行时(如您所见,我已将阈值设置为忽略“0-频率”问题):
model_bayes <- naiveBayes(isFace ~ ., data = trainReady)
prediction <- predict(model_bayes, testReady[,-1], threshold = 0.001, eps = 0)
我收到:
Error in [.default(object$tables[[v]], , nd + islogical[attribs[v]]) :
subscript out of bounds
我已经做了什么来帮助自己克服这个问题:
model_bayes <- naiveBayes(isFace ~ ., data = trainReady, drop.unused.levels = FALSE)
预测用于训练模型的数据:
prediction <- predict(model_bayes, trainReady[,-1], threshold = 0.001, eps = 0)
1 不起作用,2 起作用,但我想预测测试数据。你能告诉我如何解决这个问题吗?
【问题讨论】:
请不要在图片中提供您的数据。我们不想再次全部输入以重现您的问题。相反,请使用dput(testReady)
和 dput(trainReady)
并将结果复制到您的问题中,以便我们可以剪切并粘贴到 R 中。
【参考方案1】:
您必须使用与训练相同的离散化方法也用于测试数据。
不要单独区分它们。
【讨论】:
以上是关于朴素贝叶斯 2 类分类,下标越界的主要内容,如果未能解决你的问题,请参考以下文章