我得到一个错误。当我在R中使用h2o中的深度学习功能时,就会发生这种情况。我的回答是一个分类变量,它有3个值,所以我不能把它变成二进制标签。
错误:java.lang.IllegalArgumentException:实际列必须包含二进制类标签,但发现基数为3!
这是我的输入:
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)
set = sample(1:150, 150 , replace = FALSE)
data_train = as.h2o(dat_h20[set,])
head(data_train)
data_val = as.h2o(dat_h20[-set,])
value = exp(seq(-10,-3, length = 20))
value
validation_errors = numeric(20) # validation error for each regularisation parameter
?h2o.deeplearning
dat_h20[1]
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,
)
validation_errors[i]= h2o.logloss(model, train = TRUE, valid = TRUE)
}
plot(value, validation_errors)
2条答案
按热度按时间hlswsv351#
是的,路易斯·费利佩是正确的。请确保
1.你设置分布=“多项”
1.将dat_h20更改为H2O帧,如data_h2o <- as.h2o(dat_h20)
1.确保响应列是因子:data_h2o[,4] <- as.factor(data_h2o[,4]假设第四列是响应列。
通常情况下,如果你有2和3,H2O深度学习将能够自动找出它是一个多类分类。
brtdzjyr2#
确保多类设置:在H2O的深度学习功能中,分类的默认行为是期望二进制标签。对于多类分类,当提供了具有两个以上水平的分类响应列时,系统应自动处理。如果您将响应变量编码为数字,这可能是问题的根源。最好把它作为一个因素