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

R语言JOUSBoost包adaboost处理泰坦尼克号数据时报错如何解决?

错误诱因
  • 核心原因是你传入adaboost()函数的标签列y不符合JOUSBoost包的要求:JOUSBoost实现的Adaboost算法要求二分类标签取值为{0,1},而你将标签转换成了{-1,1},导致模型训练失败,生成的模型对象中树列表、树权重系数两个核心字段都是NULL。
  • 你打印模型时输出的空值、权重列表无内容,就是训练失败的直接体现,预测时函数需要读取树权重系数做计算,传入NULL就触发了类型不匹配的报错。
解决方法
  1. 修改标签转换逻辑,把负类标签从-1改为0:
train$Survived_ab <- ifelse(train$Survived == 'No', 0, 1)
test$Survived_ab <- ifelse(test$Survived == 'No', 0, 1)
  1. (可选优化)建议用model.matrix()生成特征矩阵,自动将因子类型的特征转成标准哑变量编码,避免因子直接转整数带来的逻辑问题:
# 生成不含截距项的特征矩阵
train_X <- model.matrix(~.-1, data = train[,2:7])
test_X <- model.matrix(~.-1, data = test[,2:7])
  1. 重新训练模型,可手动指定迭代次数和树深度参数:
library(JOUSBoost)
dt_ab <- adaboost(X = train_X, y = train$Survived_ab, n_rounds = 100, tree_depth = 1)
  1. 训练完成后再执行预测即可正常返回结果:
predict_ab <- predict(dt_ab, test_X, type = 'response')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:45:02