我开发了下面的Naive Bayes模型,该模型运行良好:
set.seed(1234)
ind <- sample(2, nrow(Overall_NB_VoI), replace = T, prob = c(0.8, 0.2))
NBtrainer <- Overall_NB_VoI[ind == 1,]
NBtester <- Overall_NB_VoI[ind == 2,]
NBmodel <- naive_bayes(FTR ~ ., data = NBtrainer, usekernel = T)
NBmodel
但是,我想确定哪些变量对此模型的贡献最大。我尝试了两种技术,但都导致如下错误:
library(caret)
varImp(NBmodel)
输出:UseMethod(“ varImp”)中的错误: 没有适用于“ naive_bayes”类对象的“ varImp”适用方法
library(rminer)
Importance(NBmodel, data = NBtrainer)
输出:PRED(M,data [(1:L),])中的错误:找不到函数“ PRED”
理想情况下,我希望能够创建不同功能的图形
任何建议将不胜感激
答案 0 :(得分:0)
要使用varImp()
中的caret
,您需要使用插入符号训练模型。您可以检查朴素贝叶斯模型available,对于要调用的包,可以选择method="naivebayes"
。
如果您希望不进行任何交叉验证就适合它,可以将trainControl设置为method="none"
,如下所示,使用示例数据集:
Grid = data.frame(usekernel=TRUE,laplace = 0,adjust=1)
mdl = train(Class ~ .,data=Sonar,method="naive_bayes",
trControl=trainControl(method="none"),
tuneGrid=Grid)
我们可以检查班级,也可以得出变量的重要性:
class(mdl$finalModel)
[1] "naive_bayes"
varImp(mdl)
ROC curve variable importance
only 20 most important variables shown (out of 60)
Importance
V11 100.00
V12 86.30
V10 82.64
V49 82.12
V9 81.97
V48 73.16
V13 72.60
V51 70.68
V47 69.99
V52 66.62
V46 66.27
V45 61.13
V4 58.45
V36 58.43
V5 54.32
V1 53.82
V44 53.37
V21 51.01
V35 49.93
V8 49.78
对于rminer
几乎是一样的,您必须使用其fit函数来训练模型,但是当我检查时,似乎他们使用软件包e1071中的naiveBayes执行拟合,所以不是非常确定这是否是您所需要的。