根本原因并解决错误,返回R的“ lime”库的“ explain”函数

时间:2018-06-28 13:36:10

标签: r random-forest h2o

在h2o随机森林上的“ lime”库中使用“解释”功能时,出现此错误。

Error in elnet(x, is.sparse, ix, jx, y, weights, offset, type.gaussian,  : 
  y is constant; gaussian glmnet fails at standardization step

我无法在线找到文档,也无法在线找到有关此问题的帮助。您能帮我解决根本原因吗?

这是我的代码:

explainer_h2o_rf  <- lime(x=big_df, 
                          model=fit_rf.hex, 
                          bin_continuous = FALSE,
                          use_density = T, 
                          quantile_bins = F)

# for(i in 1:25){
i <- c(1,2)
explanation_rf <- explain(x = x_lime[i,],
                          explainer = explainer_h2o_rf,
                          n_features = 15,
                          feature_select = "auto",
                          labels = "1")

注意:

  • 我正在预测h2o模型中的二项式变量, 'fit_rf.hex'。
  • 我通过this进行了工作,但仍然有效,但是我目前的做法没有
  • “ lime”标签似乎不适用于该石灰库,但适用于用于单元测试的内容。
  • 非高斯不应该是一个问题,因为(我认为)我已经使用内核方法设置了处理非高斯(几乎所有数据都是非高斯)数据的标志。

以下是不包含我的答案的网站/问题:

2 个答案:

答案 0 :(得分:1)

  

elnet(x,is.sparse,ix,jx,y,weights,offset,type.gaussian,:

     y是常数;高斯glmnet在标准化步骤失败

仅读取错误,您的训练数据似乎就有问题,或者可能是用于训练glmnet模型的数据的某些子集({{1}中使用了{{ 1}}函数)。

具体来说,该错误表明响应列是恒定的,因此无法训练elnet()模型-训练glmnet()模型是glmnet函数内部的一个步骤,该函数本身就是在glmnet函数中。

您应该检查您的响应列,以确保它不是恒定的。

答案 1 :(得分:1)

我遇到了类似的错误。

我将labels = "Yes"更改为labels = "Response",以匹配解决了我的问题的目标变量。