R中支持向量机和朴素贝叶斯分类器的重要性不一

Kav*_*thy 2 r machine-learning svm naivebayes

我正在研究在癌症数据集上的R中建立预测分类器。我正在使用随机森林,支持向量机和朴素贝叶斯分类器。我无法计算SVM和NB模型上的变量重要性

我最终收到以下错误。

UseMethod(“ varImp”)中的错误:没有适用于'varImp'的适用方法应用于类“ c('svm.formula','svm')”的对象

如果有人可以帮助我,我将不胜感激。

luk*_*keA 6

给定

library(e1071)
model <- svm(Species ~ ., data = iris)
class(model)
# [1] "svm.formula" "svm"     

library(caret)
varImp(model)
# Error in UseMethod("varImp") : 
#   no applicable method for 'varImp' applied to an object of class "c('svm.formula', 'svm')"

methods(varImp)
#  [1] varImp.bagEarth      varImp.bagFDA        varImp.C5.0*         varImp.classbagg*   
#  [5] varImp.cubist*       varImp.dsa*          varImp.earth*        varImp.fda*         
#  [9] varImp.gafs*         varImp.gam*          varImp.gbm*          varImp.glm*         
# [13] varImp.glmnet*       varImp.JRip*         varImp.lm*           varImp.multinom*    
# [17] varImp.mvr*          varImp.nnet*         varImp.pamrtrained*  varImp.PART*        
# [21] varImp.plsda         varImp.randomForest* varImp.RandomForest* varImp.regbagg*     
# [25] varImp.rfe*          varImp.rpart*        varImp.RRF*          varImp.safs*        
# [29] varImp.sbf*          varImp.train*  
Run Code Online (Sandbox Code Playgroud)

有没有功能varImp.svmmethods(varImp),因此错误。您可能也想看看有关交叉验证的这篇文章


小智 6

如果使用R,可以使用rminer包中的Importance方法计算变量重要性。这是我的示例代码:

library(rminer)
M <- fit(y~., data=train, model="svm", kpar=list(sigma=0.10), C=2)
svm.imp <- Importance(M, data=train)
Run Code Online (Sandbox Code Playgroud)

详细请参考以下链接https://cran.r-project.org/web/packages/rminer/rminer.pdf