r - 使用 klaR NaiveBayes 时出错

标签 r text-mining naivebayes

我正在运行 NaiveBayes 模型进行文本分析,其中包含约 2000 多个变量和 30000 多个观察值。它确实是稀疏数据,但没有任何零列或常量列。

model <- NaiveBayes(nation~., data=data_train)

我得到:

"Zero variances for at least one class in variables: "

和 50 个变量的列表。 该错误与下面的错误类似,但我的类变量是一个因素。 https://stats.stackexchange.com/questions/35694/naive-bayes-fails-with-a-perfect-predictor .

我还在相同的数据上运行了 e1071 的 naiveBayes。它可以运行,但准确率低得离谱(7%)。我用 SVM 得到了 85%。 有什么建议吗? 谢谢。

最佳答案

据我了解,数据中的某个类必须有一些变量全为零。并不是该变量的整列都为零,而是这个向量 data_train[data_train$Class=="ClassA",] (假设您的一个类(class)称为“ClassA”)全为零。

在本例中,klaR给您一个错误,警告您有关这种情况的信息。但是e1071不会,并且它会为 A 类变量生成 0 的条件概率。因此,当您尝试计算未知样本时,会导致“错误”的最终概率。

但是SVM不使用这种计算测试样本概率的策略。因此零方差对其精度几乎没有影响。

关于r - 使用 klaR NaiveBayes 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34689302/

相关文章:

machine-learning - SciKit Learn 使用 RFECV 进行特征选择和交叉验证

r - R radix-2 DIT 案例中的 Cooley-Tukey FFT

r - 存在 2 个图例时如何更改图例点的大小

从简短的荷兰语文本中提取关键字

r - R 文本数据中最常见的短语

python - 使用 NLTK 的半监督朴素贝叶斯

r - 用列表填充矩阵,其中列表中的每个向量可能是 1 - 7 个元素 [R]

具有字符变量的 R 比例函数

elasticsearch - Lucene:按文档 ID 过滤查询

c# - 如何使用朴素贝叶斯和主成分分析对文档进行分类(C#、Accord.NET)