【问题标题】:How to extract nodesize default value from RandomForest in R如何从 R 中的 RandomForest 中提取节点大小默认值
【发布时间】:2018-12-02 20:59:04
【问题描述】:

我知道如何更改RandomForestnodesize 的值(终端节点中的最小行数)。但是,我想知道给定RandomForest 模型nodesize 的值是多少。

require(party)
require (data.table)
require (e1071)
require (randomForest)
dat1 <- fread('https://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data',stringsAsFactors=T)

## split data to train and test
set.seed(123)
dat1 <- subset(dat1, !is.na(V1))
smp_size<-0.8*nrow(dat1)
train_ind <- sample(seq_len(nrow(dat1)), size = smp_size)
train <- dat1[train_ind, ]
test <- dat1[-train_ind, ]
rf1 <- randomForest(V1 ~ ., data = train,keep.inbag = TRUE)
rf2 <- randomForest(V1 ~ ., data = train, ntree = 50,keep.inbag = TRUE)

【问题讨论】:

  • 你真的是指哪个dat1
  • 没关系。这是一个例子

标签: r random-forest


【解决方案1】:

randomForest 碰巧没有返回节点大小参数。但是,它只有“三个”可能的值:要么由用户指定,要么由if (!is.null(y) &amp;&amp; !is.factor(y)) 5 else 1 设置(1 用于分类,5 用于回归)。因此,我们有

getNodesize <- function(x) {
  look <- pmatch(names(x$call), "nodesize")
  if(any(!is.na(look)))
    x$call[!is.na(look)][[1]]
  else if (!is.null(x$y) && !is.factor(x$y))
    5
  else
    1
}

rf1 <- randomForest(V1 ~ ., data = train)
getNodesize(rf1)
# [1] 1
rf1 <- randomForest(V1 ~ ., data = train, nodesi = 3)
getNodesize(rf1)
# [1] 3

【讨论】:

    猜你喜欢
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    • 2023-01-14
    • 2018-06-02
    相关资源
    最近更新 更多