使用内置的虹膜数据集,我可以训练一个模型:
model <- train(Species~., data=iris, method='xgbTree')
我可以提取功能的名称,但是当我尝试获取它们的类时,它会返回字符,因为它们只是字符串。
model$coefnames
## "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
lapply(model$coefnames, class)
## "character" "character" "character" "character"
但是,当您尝试输入另一种类型的变量进行预测时,似乎插入符号知道预期的类型。
test<- data.frame(Sepal.Length=1,
Sepal.Width=2,
Petal.Length=3,
Petal.Width="x") # character instead of numeric
predict(model, newdata=test)
## Error: variable 'Petal.Width' was fitted with type "numeric" but type "factor" was supplied
有没有什么方法可以通过仅使用模型对象本身来提取用于训练模型的特征类型?我能得到的最接近的是使用dplyr
函数type.convert
,但这需要知道输入。我的理想功能将运行如下:
model_types(model$coefnames)
## "numeric" "numeric" "numeric" "numeric"
答案 0 :(得分:1)
此信息存储为模型术语的属性
attr(terms(model), "dataClasses")
# Species Sepal.Length Sepal.Width Petal.Length Petal.Width
# "factor" "numeric" "numeric" "numeric" "numeric"