首页 > 解决方案 > 朴素贝叶斯 2 类分类,下标越界

问题描述

有两个数据帧: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

我已经做了什么来帮助自己克服这个问题:

  1. model_bayes <- naiveBayes(isFace ~ ., data = trainReady, drop.unused.levels = FALSE)
  2. 预测用于训练模型的数据:

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

标签: rmachine-learningclassificationnaivebayes

解决方案


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

不要独立地对它们进行区分。


推荐阅读