R caret 朴素贝叶斯精度为空

Posted

技术标签:

【中文标题】R caret 朴素贝叶斯精度为空【英文标题】:R caret naïve bayes accuracy is null 【发布时间】:2019-05-27 09:39:39 【问题描述】:

我有一个 dataset 可以使用 SVM 和朴素贝叶斯进行训练。 SVM 有效,但朴素贝叶斯无效。关注下面的源码:

library(tools)
library(caret)
library(doMC)
library(mlbench)
library(magrittr)
library(caret)

CORES <- 5 #Optional
registerDoMC(CORES) #Optional

load("chat/rdas/2gram-entidades-erro.Rda")

set.seed(10)
split=0.60

maFinal$resposta <- as.factor(maFinal$resposta)
data_train <- as.data.frame(unclass(maFinal[ trainIndex,]))
data_test <- maFinal[-trainIndex,]

treegram25NotNull <- train(x = subset(data_train, select = -c(resposta)),
      y = data_train$resposta, 
      method = "nb",
      trControl = trainControl(method = "cv", number = 5, savePred=T, sampling = "up"))

treegram25NotNull

最终准确度为空

警告信息: 1: 在nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo, : 重新抽样的绩效指标中存在缺失值。 2:在 train.default(subset(data_train, select = -c(resposta)), data_train$resposta, 中: 在汇总结果中发现缺失值

任何帮助将不胜感激,谢谢。

【问题讨论】:

trainIndex 当前未定义。 抱歉:trainIndex 【参考方案1】:

修复非常简单:

set.seed(10)
split <- 0.60
maFinal[] <- lapply(maFinal, as.factor)

目前,您的所有变量(resposta 除外)都是数字。但是,它们最多只有 12~ 个不同的值,这意味着它们实际上都应该是因子变量。此外,其中许多是高度不平衡的。然后,在拆分样本时,问题在于将只有一个唯一值的(实际上是因子)变量视为连续变量。

【讨论】:

谢谢。这是工作 maFinal[]

以上是关于R caret 朴素贝叶斯精度为空的主要内容,如果未能解决你的问题,请参考以下文章

klaRA 和插入符号中的朴素贝叶斯

R语言-贝叶斯网络语言实现及与朴素贝叶斯区别(笔记)

朴素贝叶斯和 SVM 分类 - 如何在 x y 轴上绘制精度?

R构建朴素贝叶斯分类器(Naive Bayes Classifier)

对于朴素贝叶斯,插入符号和 klaR 包之间的速度差异

R语言机器学习 | 6 朴素贝叶斯