R H2O深度学习
H2O Deep Learning默认运行回归,尽管我已确保目标变量是一个因子(只有两个级别)。有关于如何解决这个问题的线索吗 代码如下:R H2O深度学习,r,machine-learning,h2o,R,Machine Learning,H2o,H2O Deep Learning默认运行回归,尽管我已确保目标变量是一个因子(只有两个级别)。有关于如何解决这个问题的线索吗 代码如下: dnn_mod <- h2o.deeplearning(x = 2:321, # column numbers for predictors y = 322, # column number for label training_frame = sdcs_data,
dnn_mod <-
h2o.deeplearning(x = 2:321, # column numbers for predictors
y = 322, # column number for label
training_frame = sdcs_data, # data in H2O format
activation = "TanhWithDropout", # or 'Tanh'
input_dropout_ratio = 0.2, # % of inputs dropout
hidden_dropout_ratios = c(0.3,0.3,0.3), # % for nodes dropout
balance_classes = FALSE,
hidden = c(150,150,150),
epochs = 500,
#standardize = TRUE,
epsilon = 1.0e-5,
loss = "CrossEntropy",
stopping_rounds = 50,
stopping_metric = "AUC")
#classification = TRUE)
dnn_mod如果要运行分类,则必须将响应变量编码为“factor”(又名“enum”)类型。请看下面的图片。所有H2O算法都是这样。您所说的“正在运行回归”是什么意思?默认情况下,运行回归模型而不是分类。像CrosseEntropy损失这样的参数在这种情况下没有意义,会抛出错误。所以不要设置loss=“CrossEntropy”…我认为这不是重点。问题不在于错误,而在于H2O没有运行分类。一些数据和更多的代码会更好,根据我的问题,我已经确保响应被编码为“因子”。你确定第322列是响应列吗?请粘贴h2o.descripe(sdcs_数据[322])
或h2o.getTypes(数据)[[322]]]
的输出。它应该是“enum”。此外,您可以明确地设置distribution=“bernoulli”
,如果您错误地没有将响应转换为因子,那么您将看到一条消息,其中包括以下内容:“bernoulli distribution不允许回归。”
最后,如果您看到错误,“对于交叉熵损失,响应必须是分类的。”
,这意味着您尚未将响应转换为因子。