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

R中使用H2O深度学习模型时多分类标签基数报错的解决方法

解决H2O深度学习三分类任务报错问题

你遇到的错误是因为数据划分和函数调用存在问题,导致H2O误判任务类型。以下是具体问题和修复方案:

问题1:训练集与验证集划分错误

你的采样代码set = sample(1:150, 150 , replace = FALSE)会把所有数据纳入训练集,验证集data_val为空,这不仅失去了验证意义,还可能干扰H2O对任务类型的识别。

修复代码:

set.seed(2023)
# 按7:3比例划分训练集和验证集
train_idx = sample(1:nrow(dat_h20), size = round(0.7*nrow(dat_h20)), replace = FALSE)
data_train = as.h2o(dat_h20[train_idx,])
data_val = as.h2o(dat_h20[-train_idx,])

问题2:确认响应变量的分类类型

确保H2O正确识别响应变量为多分类类别,转换为H2O框架后执行以下检查:

# 查看响应变量的类别数量
h2o.levels(data_train$Event)
# 查看列类型(应为enum类型)
h2o.describe(data_train$Event)

如果类型不对,手动转换:

data_train$Event = h2o.asfactor(data_train$Event)
data_val$Event = h2o.asfactor(data_val$Event)

问题3:h2o.logloss调用错误

h2o.logloss不能同时指定train = TRUE和valid = TRUE,需单独获取训练集或验证集的损失值。若要记录验证集误差,修改为:

validation_errors[i] = h2o.logloss(model, valid = TRUE)

修正后的完整代码

h2o.init()
# 构建数据集并确保响应变量为因子
dat_h20 = data.frame(
  Event = as.factor(space_data$Event),
  TrajA = space_data$TrajA,
  AcousticA = space_data$AcousticA,
  HullScan = as.factor(space_data$HullScan),
  MCStatus = as.factor(space_data$MCStatus)
)

set.seed(2023)
# 正确划分训练集和验证集
train_idx = sample(1:nrow(dat_h20), size = round(0.7*nrow(dat_h20)), replace = FALSE)
data_train = as.h2o(dat_h20[train_idx,])
data_val = as.h2o(dat_h20[-train_idx,])

# 确认响应变量的类别和类型
h2o.levels(data_train$Event)

value = exp(seq(-10,-3, length = 20))
validation_errors = numeric(20)

for (i in 1:length(value)) {
  model = h2o.deeplearning(
    x = 2:5, 
    y = 1,
    training_frame = data_train, 
    validation_frame = data_val,
    standardize = TRUE, 
    hidden = c(5,5), 
    activation = 'Rectifier', 
    distribution = 'multinomial',
    loss = 'CrossEntropy',
    l2 = value[i],
    rate = 0.01,
    adaptive_rate = FALSE,
    epochs = 1000,
    reproducible = TRUE,
    seed = 2
  )
  # 记录验证集logloss
  validation_errors[i] = h2o.logloss(model, valid = TRUE)
}

plot(value, validation_errors, xlab = "L2正则化参数", ylab = "验证集Logloss", main = "正则化参数与验证误差关系")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:46:06