【问题标题】:How can I create a Partial Dependence plot for a categorical variable in R?如何为 R 中的分类变量创建部分依赖图?
【发布时间】:2023-04-04 11:45:01
【问题描述】:

我正在使用 r-package randomForest 并成功制作了随机森林模型和重要性图。我正在使用二分法响应和几个分类预测变量。

但是,我不知道如何为我的分类变量制作部分依赖图。我尝试使用 randomForest 命令 partialPLot。但我收到以下错误:

> partialPlot(rf.5, rf.train.1, religion)
Error in is.finite(x) : default method not implemented for type 'list'

.

所以我的问题是:谁能简单地解释一下如何为分类变量制作随机森林部分依赖图?

这是我想做的那种情节:https://stats.stackexchange.com/questions/235667/partial-dependence-plot-interpretation-for-categorical-variables

非常感谢您对此的帮助。谢谢!

【问题讨论】:

    标签: r plot machine-learning random-forest categorical-data


    【解决方案1】:

    这是一个简单的例子,说明如何将partialPlot 用于分类解释变量。检查partialPlot 的输入类别是否与此示例相同。
    希望对你有帮助。
    数据集df有一个二进制自变量x4和一个二进制响应变量y

    df <- data.frame(iris[,1:3], x4=factor(iris$Petal.Width>1.5), 
                             y=factor(iris$Species=="virginica"))
    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 ...
     $ x4          : Factor w/ 2 levels "FALSE","TRUE": 1 1 1 1 1 1 1 1 1 1 ...
     $ y           : Factor w/ 2 levels "FALSE","TRUE": 1 1 1 1 1 1 1 1 1 1 ...
    

    这是x4 的部分图:

    library(randomForest)
    RF <- randomForest(y~., data=df)
    
    partialPlot(x=RF, pred.data=df, x.var=x4, which.class="TRUE")
    

    【讨论】:

    • 感谢您的帮助!但是当我尝试你所做的事情时,我得到了以下错误:&gt; partialPlot(x=rf.5, pred.data=rf.train.1, x.var=rel, which.class="4") Error in partialPlot.randomForest(x = rf.5, pred.data = rf.train.1, x.var = rel, : 4is not one of the class labels. 但是“4”绝对是级别标签之一,那么发生了什么?如果我删除“which.class=”,我会收到以下错误:&gt; partialPlot(x=rf.5, pred.data=rf.train.1, x.var=rel) Error in FUN(X[[i]], ...) : only defined on a data frame with all numeric variables 你知道为什么会这样吗?谢谢!
    • 你能把str(rf.train.1)的结果贴出来吗?
    • 当然! &gt; str(rf.train.1) Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 47102 obs. of 2 variables: $ rel : Factor w/ 10 levels "1","2","3","4",..: 3 10 3 6 6 6 8 6 8 5 ... $ relprac:Class 'labelled' atomic [1:47102] 4 3 2 2 3 2 4 3 3 3 ... .. ..- attr(*, "labels")= Named num [1:12] -1 0 1 2 3 4 5 6 7 9 ... .. .. ..- attr(*, "names")= chr [1:12] "Missing" "Never" "A few times a year" "About once a month" ...
    • which.class 必须是结果类之一,而不是自变量。
    • 好的,现在我已经将其更改为结果变量的类。我现在收到此错误:partialPlot(x=rf.5, pred.data=rf.train.1, x.var=rel, which.class= "1") Error in FUN(X[[i]], ...) : only defined on a data frame with all numeric variables
    【解决方案2】:

    plotmo R 包将为“任何”模型绘制所有变量和变量对(双变量依赖)的部分依赖关系, 包括那些具有分类变量和响应的变量。

    有关简单的 plotmo 示例,请参阅 Bivariate partial dependence with randomForest in R.

    【讨论】:

      猜你喜欢
      • 2018-03-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 1970-01-01
      相关资源
      最近更新 更多