簡體   English   中英

使用plot.gbm生成邊際圖時出現錯誤

[英]Getting error when using plot.gbm to produce marginal plots

R的新手-我正在嘗試使用gbm軟件包完成的BRT做一些邊際圖,並保持相同的錯誤。 下面是我的代碼; boosted.tree_LRFF是我從完成gbm.fit得到的輸出

> plot.gbm(boosted.tree_LRFF, 
+          i.var= 5,
+          n.trees = train.model$finalModel$tuneValue$n.trees,
+          continuous.resolution = 100,
+          return.grid = FALSE,
+          type = "link")
Error in plot.window(...) : need finite 'ylim' values
In addition: Warning messages:
1: In min(x) : no non-missing arguments to min; returning Inf
2: In max(x) : no non-missing arguments to max; returning -Inf

在第一部分中,我只是從“ gbm.pdf”包中重新創建用於擬合gbm的數據集:

library(gbm)
N <- 1000
X1 <- runif(N)
X2 <- 2 * runif(N)
X3 <- ordered(sample(letters[1:4], N, replace = TRUE), levels = letters[4:1])
X4 <- factor(sample(letters[1:6], N, replace = TRUE))
X5 <- factor(sample(letters[1:3], N, replace = TRUE))
X6 <- 3 * runif(N)
mu <- c(-1, 0, 1, 2)[as.numeric(X3)]
SNR <- 10 # signal-to-noise ratio
Y <- X1 ** 1.5 + 2 * (X2 ** .5) + mu
sigma <- sqrt(var(Y) / SNR)
Y <- Y + rnorm(N, 0, sigma)
# introduce some missing values
X1[sample(1:N, size = 500)] <- NA
X4[sample(1:N, size = 300)] <- NA
data <- data.frame(Y = Y, X1 = X1, X2 = X2, X3 = X3, X4 = X4, X5 = X5, X6 = X6)

boosted.tree_LRFF <-
gbm(Y ~ X1 + X2 + X3 + X4 + X5 + X6,
data = data,
var.monotone = c(0, 0, 0, 0, 0, 0),
distribution = "gaussian",
n.trees = 1000,
shrinkage = 0.05,
interaction.depth = 3,
bag.fraction = 0.5,
train.fraction = 0.5,
n.minobsinnode = 10,
cv.folds = 3,
keep.data = TRUE,
verbose = FALSE,
n.cores = 1) 

現在,我繪制變量x5的樹函數值,類似於您的圖:

plot(boosted.tree_LRFF,
i.var = 5,
n.trees = boosted.tree_LRFF$n.trees,
continuous.resolution = 100,
return.grid = FALSE,
type = "link")

我認為您的錯誤是由於n.trees參數引起的。 您可以將其輸入為常量,也可以從GBM擬合對象輸入。 在我的示例中,我使用了來自“ boosted.tree_LRFF”的名稱,該名稱似乎是示例中原始擬合對象的名稱(盡管我的數據當然有所不同)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM