R 插入符号包:所有函数不';不适用于所有型号

R 插入符号包:所有函数不';不适用于所有型号,r,r-caret,nnet,R,R Caret,Nnet,我有下面的脚本,可以很好地与携程模型/派对包配合使用。当我将其与NNET模型/包交换时,varImp和plot(最终模型)抛出一个错误。我的“假设”是caret包中的helper函数可以与所有支持的模型一起工作 library(caret) library(nnet) #read in data data = iris #split data into training, test, and final test samples trainIndex <- createDataPart

我有下面的脚本,可以很好地与携程模型/派对包配合使用。当我将其与NNET模型/包交换时,varImp和plot(最终模型)抛出一个错误。我的“假设”是caret包中的helper函数可以与所有支持的模型一起工作

library(caret)
library(nnet)

#read in data
data = iris

#split data into training, test, and final test samples
trainIndex <- createDataPartition(data$Species, p=.80, list=F)
train = data[trainIndex,]
test = data[-trainIndex,]

#train and plot model fit
tree.fit = train(Species~., data=train, method="nnet")
varImp(tree.fit)
plot(tree.fit$finalModel)

#predict test data
tree.pred.test = predict(tree.fit, newdata=test)
confusionMatrix(tree.pred.test, test$Species)


> varImp(tree.fit)
nnet variable importance

  variables are sorted by maximum importance across the classes
Error in data.frame(`NA` = character(0), `NA` = character(0), `NA` = character(0),  : 
  row names supplied are of the wrong length
In addition: Warning message:
In format.data.frame(x, digits = digits, na.encode = FALSE) :
  corrupt data frame: columns will be truncated or padded with NAs
> plot(tree.fit$finalModel)
Error in xy.coords(x, y, xlabel, ylabel, log) : 
  'x' is a list, but does not have components 'x' and 'y'
库(插入符号)
图书馆(nnet)
#读入数据
数据=虹膜
#将数据拆分为培训、测试和最终测试样本
trainIndex varImp(树型拟合)
nnet变量重要性
变量按类的最大重要性排序
数据帧中出现错误(`NA`=字符(0),`NA`=字符(0),`NA`=字符(0),:
提供的行名称长度错误
此外:警告信息:
格式为.data.frame(x,digits=digits,na.encode=FALSE):
损坏的数据帧:列将被截断或用NAs填充
>绘图(tree.fit$finalModel)
xy.coords(x,y,xlabel,ylabel,log)中出错:
“x”是一个列表,但没有组件“x”和“y”

您正在“尝试”绘制
树。fit$finalModel
,它与
插入符号无关,因为它是原始模型类。如果不存在,则是一个问题


因为变量重要性问题似乎是
print.varImp.train
的一个bug。如果您将其分配给一个对象,并查看
重要性部分,您可以看到它。

今天使用
插入符号::train(method=“nnet”)
遇到类似问题。
插入符号::varImp()
的输出很好,但是(从我所知)由于它还包含一列表示
总体
,因此我无法通过
caret::plot(varImp())
进行绘图。但是,我可以通过以下方式绘制变量重要性:

nn.m1.vi = varImp(nn.m1)
nn.m1.vi$importance = as.data.frame(nn.m1.vi$importance)[, -1]
plot(nn.m1.vi, main = "Var Imp: nn.m1")
sessionInfo()


迈克尔你的第一点说得很有道理。再说一次,我的假设是火车函数是创建fit.finalModel的工具,因此将与它支持的任何模型兼容。在第二部分中,我找不到名称中包含varImp的任何元素。我在R studio中扩展了右侧的环境,并使用了attributes函数-没有看到它。再次感谢
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
caret_6.0-71