通过varImp提取超过20个变量的重要性

我正在处理一个包含超过100个特征的大型数据集(这些特征都是相关的,因为它们已经过筛选;原始数据集有超过500个特征)。我使用caret包中的train()函数和“ranger”方法创建了一个随机森林模型。

这里有一个问题:如何提取所有变量的重要性,而不是只提取前20个最重要的变量?varImp()函数默认只输出前20个变量的重要性。

以下是一些示例代码(不包括训练集,因为它非常大):

library(caret)rforest_model <- train(target_variable ~ .,                       data = train_data_set,                       method = "ranger",                       importance = "impurity")

这是提取变量重要性的代码:

varImp(rforest_model)

回答:

varImp函数提取所有变量的重要性(即使这些变量未被模型使用),它只是打印出前20个变量。考虑以下示例:

library(mlbench) #for data setlibrary(caret)library(tidyverse)set.seed(998)data(Ionosphere)rforest_model <- train(y = Ionosphere$Class,                       x = Ionosphere[,1:34],                       method = "ranger",                       importance = "impurity")nrow(varImp(rforest_model)$importance) #34 variables extracted

让我们检查它们:

varImp(rforest_model)$importance %>%   as.data.frame() %>%  rownames_to_column() %>%  arrange(Overall) %>%  mutate(rowname = forcats::fct_inorder(rowname )) %>%  ggplot()+    geom_col(aes(x = rowname, y = Overall))+    coord_flip()+    theme_bw()

enter image description here

请注意,在这个数据集中,V2是一个零方差特征,因此它的重要性为0,并且完全未被模型使用。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注