【问题标题】:How to extract if-then rules from random forest in R?如何从R中的随机森林中提取if-then规则?
【发布时间】:2019-07-12 20:45:17
【问题描述】:

我需要提取随机森林模型中所有树对应的 if-then 规则。

我正在使用 RRF 和 inTress 包。

library(RRF)
library(inTrees)
treeList <- RF2List(rf)
ruleExec <- extractRules(treeList,X,digits=4)
ruleExec <- unique(ruleExec)

这给了我以下输出:-

X[,9]>0.599 & X[,10]>2.2447

我需要相应的类预测如下:-

If X[,9]>0.599 & X[,10]>2.2447 then Class1

【问题讨论】:

标签: r random-forest


【解决方案1】:

您可以使用inTrees 中的getRuleMetric 函数。根据inTrees的文档:

将结果分配给条件,并衡量规则

以 iris 数据集为例,使用 Species 作为目标:

ruleMetric <- getRuleMetric(ruleExec, X, target)

输出:

  #      len freq    err                  condition                                                                         pred        
  # [1,] "1" "0.333" "0"                  "X[,4]<=0.8"                                                                      "setosa"    
  # [2,] "3" "0.187" "0"                  "X[,4]>0.8 & X[,4]<=1.65 & X[,4]<=1.35"                                           "versicolor"
  # [3,] "4" "0.127" "0"                  "X[,3]<=4.95 & X[,4]>0.8 & X[,4]<=1.65 & X[,4]>1.35"                              "versicolor"
  # [4,] "5" "0.02"  "0"                  "X[,3]>4.95 & X[,4]>0.8 & X[,4]<=1.65 & X[,4]>1.35 & X[,4]<=1.55"                 "virginica" 
  # [5,] "6" "0.007" "0"                  "X[,2]<=2.85 & X[,3]>4.95 & X[,4]>0.8 & X[,4]<=1.65 & X[,4]>1.35 & X[,4]>1.55"    "versicolor"
  # [6,] "6" "0.007" "0"                  "X[,2]>2.85 & X[,3]>4.95 & X[,4]>0.8 & X[,4]<=1.65 & X[,4]>1.35 & X[,4]>1.55"     "virginica" 
  # ...

【讨论】:

    猜你喜欢
    • 2018-11-09
    • 2019-10-01
    • 2019-11-09
    • 1970-01-01
    • 2017-12-04
    • 1970-01-01
    • 2018-01-18
    • 2015-10-19
    • 2020-02-25
    相关资源
    最近更新 更多