2017-02-20 77 views
3

我是新来的R,并正尝试解决为什么我的预测是出界。这个问题应该是一个简单的解决方法,因为这更像是一个介绍。[R naiveBayes分类预测“下标越界”

设置我的分类与列车数据

sms_classifier <- naiveBayes(sms_train, sms_train_labels) 

但是当我尝试做预测funtion

sms_test_pred <- predict(sms_classifier, sms_test) 

错误给出 错误

`[.default`(object$tables[[v]], , nd + islogical[attribs[v]]) : subscript out of bounds 

回答

1

假设你是会发生错误试图构建一个需要documentTerm矩阵的垃圾邮件分类器,这种情况ns当测试数据集中有更多因子(又称术语)时,这些因子不存在于训练数据集中。因此,摆脱使用下面的代码,这些非常罕见的条款 -

freq_terms = findFreqTerms(dtm.train, 5) 
reduced_dtm.train = DocumentTermMatrix(corpus.train, list(dictionary=freq_terms)) 
reduced_dtm.test = DocumentTermMatrix(corpus.test, list(dictionary=freq_terms)) 

上面的代码将摆脱任何不频繁的术语(反正他们是无用的),并在测试数据集的水平将匹配在水平训练数据集。然后预测函数不应该抛出任何错误。