r语言 - 使用具有重要性的随机森林/带有因子变量的 varImp 函数进行特征选择



为了构建分类模型,我正在尝试从数据集中选择最重要的特征。
我的数据包含混合属性(数字和分类)。我计划在应用随机森林从数据中选择特征以提高模型的准确性后,在 R 中应用(重要性或 varImp)函数。

我的问题是:我可以在没有转换步骤的情况下直接在数据上应用随机森林,或者我必须将分类属性转换为二进制 (0,1)

我已经在数值数据集上应用了具有重要性/varImp函数的随机森林,该模型工作正常,但我不确定混合数据。

是的,可以在 R 中包含用于变量重要性度量和分类/回归的阶乘(偶数有序)变量。

请参阅此可重现的示例:

library(randomForest)
df <- iris
df$Petal.Width <- as.factor(df$Petal.Width)
str(df)
# 'data.frame': 150 obs. of  5 variables:
# $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
# $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
# $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
# $ Petal.Width : Factor w/ 22 levels "0.1","0.2","0.3",..: 2 2 2 2 2 4 3 2 2 1 ...
# $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
rfmodel <- randomForest(x = df[,1:4], 
                        y = df$Species, 
                        importance = T)
importance(rfmodel)
#                 setosa versicolor virginica MeanDecreaseAccuracy MeanDecreaseGini
# Sepal.Length 11.266441   8.036164 13.480521            15.940870        14.152530
# Sepal.Width   6.394913   4.071819  5.076422             7.869699         2.880664
# Petal.Length 43.532850  39.802356 46.246262            60.663778        53.622069
# Petal.Width  14.272307  24.389310 19.109018            26.923048        28.617028

如果您使用 randomForrest 包中的 randomForrest 函数,则不必将独立分类变量转换为每个值的单独列。

虽然,您需要确保因变量(预测)是因子(用于分类)或数字(用于回归)。

最新更新