我正在运行一个用于文本分析的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%)。使用支持向量机我得到了85%的结果。有什么建议吗?谢谢。
发布于 2016-04-15 00:30:04
据我所知,对于数据中的某个类,必须有一些变量全为零。并不是该变量的整个列都是零,但是这个向量data_train[data_train$Class=="ClassA",] (假设您的一个类被称为"ClassA")是全零的。
在这种情况下,klaR会给出一个错误,警告您这种情况。但e1071并非如此,它将为A类变量生成条件概率0。因此,当您尝试计算未知样本时,会导致“错误”的最终概率。
然而,SVM没有使用这种策略来计算测试样本的概率。因此,零方差对其精度几乎没有影响。
https://stackoverflow.com/questions/34689302
复制相似问题