朴素贝叶斯 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 &lt;- naiveBayes(isFace ~ ., data = trainReady, drop.unused.levels = FALSE) 预测用于训练模型的数据:

prediction &lt;- predict(model_bayes, trainReady[,-1], threshold = 0.001, eps = 0) 1 不起作用,2 起作用,但我想预测测试数据。你能告诉我如何解决这个问题吗?

【问题讨论】:

请不要在图片中提供您的数据。我们不想再次全部输入以重现您的问题。相反,请使用 dput(testReady)dput(trainReady) 并将结果复制到您的问题中,以便我们可以剪切并粘贴到 R 中。 【参考方案1】:

您必须使用与训练相同的离散化方法用于测试数据。

不要单独区分它们。

【讨论】:

以上是关于朴素贝叶斯 2 类分类,下标越界的主要内容,如果未能解决你的问题,请参考以下文章

朴素贝叶斯分类算法的sklearn实现

基于概率论的分类方法:朴素贝叶斯

使用高斯朴素贝叶斯的多类分类

04-朴素贝叶斯

贝叶斯分类

算法 - 朴素贝叶斯分类算法