You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言gbm包summary函数报错求助:plot.window需有限xlim值

解决gbm包summary函数在R 3.5.0中出现的need finite 'xlim' values错误

我来帮你解决这个在R 3.5.0版本中使用gbm包summary()函数时遇到的报错问题。

问题复现

你执行的代码如下:

library(ISLR)
Caravan$Purchase <- ifelse(Caravan$Purchase == "Yes", 1, 0)
train_index <- 1:1000
train <- Caravan[train_index, ]
test <- Caravan[-train_index, ]
library(gbm)
set.seed(1234)
boost <- gbm(Purchase ~ ., data = train, n.trees=400, shrinkage =0.01, distribution = "bernoulli")
summary(boost)

报错信息及回溯:

Error in plot.window(xlim, ylim, log = log, ...) : need finite 'xlim' values
5. plot.window(xlim, ylim, log = log, ...)
4. barplot.default(rel.inf[i[cBars:1]], horiz = TRUE, col = rainbow(cBars, start = 3/6, end = 4/6), names = object$var.names[i[cBars:1]], xlab = "Relative influence", ...)
3. barplot(rel.inf[i[cBars:1]], horiz = TRUE, col = rainbow(cBars, start = 3/6, end = 4/6), names = object$var.names[i[cBars:1]], xlab = "Relative influence", ...)
2. summary.gbm(boost)
1. summary(boost)

问题原因

这个错误是R 3.5.0版本的特性导致的:R 3.5.0对绘图参数的检查变得更严格,而gbm包旧版本的summary.gbm()函数在计算特征相对重要性时,会出现部分特征的相对重要性值为0的情况,这就导致barplot()无法生成有效的xlim范围,最终触发报错。而R 3.4.4没有这么严格的参数检查,所以不会出现这个问题。

解决方案

这里有几个可行的解决办法,你可以依次尝试:

方法1:明确指定n.trees参数到summary()函数

在调用summary()时,手动传入训练模型时设置的树数量,确保函数用正确的树集合计算特征重要性:

summary(boost, n.trees = 400)

这能避免因默认树数量不匹配导致的特征重要性计算异常,很多时候能直接解决问题。

方法2:手动过滤无效特征后绘图

如果方法1无效,你可以跳过原函数的绘图逻辑,手动提取并过滤掉相对重要性为0的特征,再自行绘制条形图:

# 提取特征重要性但不绘图
imp <- summary(boost, plotit = FALSE)
# 过滤掉相对重要性为0的特征
imp_filtered <- imp[imp$rel.inf > 0, ]
# 手动绘制条形图
barplot(imp_filtered$rel.inf[order(imp_filtered$rel.inf)], 
        horiz = TRUE, 
        names.arg = imp_filtered$var[order(imp_filtered$rel.inf)],
        col = rainbow(nrow(imp_filtered), start = 3/6, end = 4/6),
        xlab = "Relative influence")

方法3:更新gbm包到最新版本

这个问题在gbm包的后续更新中已经被官方修复,直接更新包就能彻底解决:

install.packages("gbm")

更新完成后重新训练模型,再调用summary()应该就能正常运行了。

方法4:降级R版本(备选)

如果上述方法都无法快速解决,你可以暂时降级到R 3.4.4版本,这个版本不会触发这个严格的绘图参数检查。

内容的提问来源于stack exchange,提问作者ktj1989

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:07:17