R H2O深度学习

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,

H2O Deep Learning默认运行回归,尽管我已确保目标变量是一个因子(只有两个级别)。有关于如何解决这个问题的线索吗

代码如下:

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不允许回归。”
最后,如果您看到错误,
“对于交叉熵损失,响应必须是分类的。”
,这意味着您尚未将响应转换为因子。