我正在运行 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/