问题描述
我是R语言的新手,正在使用caret
学习ml。我当时正在处理UCI银行的市场营销响应数据,但此处使用iris
数据来提高可重复性。
问题是我在error
模型上从vif
运行car package
时得到classification
。
library(tidyverse)
library(caret)
library(car)
iris
# to make it binary classification
iris_train <- iris %>% filter(Species %in% c("setosa","versicolor"))
iris_train$Species <- factor(iris_train$Species)
创建模型
model_iris3 <- train(Species ~ .,data = iris_train,method = "gbm",verbose = FALSE
# tuneLength = 5,# metric = "Spec",# trControl = fitCtrl
)
vif错误
# vif
car::vif(model_iris3)
UseMethod(“ vcov”)中的错误:没有适用于'vcov'的适用方法应用于类“ c('train','train.formula')”的对象
我从以下Variance inflation VIF for glm caret model in R帖子中了解了将finalModel
用于vif
但仍然出现错误
car::vif(model_iris3$finalModel)
UseMethod(“ vcov”)中的错误:没有适用于“ vcov”的适用于“ gbm”类对象的方法
与adaboost
,earth
等相同的错误。
感谢任何帮助或建议来解决此问题。
(更新)
最后,此方法有效(如果仍然出现错误,请参见Answers
中的完整解决方案):
vif
在classification
模型上不起作用,因此将dependent
变量转换为numeric
并在其上运行linear regression
,然后运行vif
model_iris4 <- train(as.numeric(Species) ~ .,method = "lm",# trControl = fitCtrl
)
car::vif(model_iris4$finalModel)
######## output ##########
Sepal.Length Sepal.Width Petal.Length Petal.Width
4.803414 2.594389 36.246326 25.421395
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)